2011-10-28 42 views
8

Khi bạn chạy một máy chủ bên trong IntelliJ, bạn có thể thấy đầu ra bàn điều khiển trong cửa sổ ở cuối màn hình.Có thể có tên lớp có thể nhấp trong giao diện điều khiển trong IntelliJ không?

Có cách nào để định dạng đầu ra để IntelliJ nhận ra tên lớp và làm cho chúng có thể nhấp không? Sau đó, khi tôi thấy một tên lớp trong đầu ra máy chủ, tôi có thể nhấp vào nó và đi thẳng đến đó.

Cảm ơn :)

Trả lời

5

Có. Lấy từ trợ giúp trực tuyến http://www.jetbrains.com/idea/webhelp/setting-log-options.html

Nếu bạn đang sử dụng các công cụ khai thác gỗ của bên thứ ba, bạn có thể muốn làm cho sản lượng thông điệp của, bắt chước một mối liên hệ tiêu chuẩn để mã nguồn như cho dòng stacktrace (tại . (:)). Để làm điều đó, bạn nên thêm Mẫu chuyển đổi cụ thể vào tệp cấu hình log.xml của mình. Ví dụ, trong một mẫu chuyển đổi log4j này sẽ

<param name="ConversionPattern" value="%-5p - [%-80m] - at %c.%M(%F:%L)%n"/> 

Tuy nhiên, sản lượng sản xuất là khá xấu xí với những cái tên đầy đủ, tên phương pháp, vv

+0

Tài liệu chính thức khá mơ hồ về những gì cần thiết ở mức tối thiểu (có liên quan ở đây) –

2

Bạn có thể xác định riêng đường output filters hoặc tập tin in của bạn với số dòng phân cách bằng ruột kết, một trong hai đường dẫn đầy đủ hoặc đường dẫn tương đối với cội nguồn nguồn dự án của bạn.

Bộ lọc đầu ra tùy chỉnh có thể sử dụng các biến sau: $FILE_PATH$, $LINE$.

+0

Chơi xung quanh với điều này. Có vẻ như chỉ những nguồn thực sự hiện diện mới được đánh dấu. Tôi muốn có các nguồn tải về cho các phụ thuộc Maven được đánh dấu quá. Điều này có thể không? –

18

Tính đến IntelliJ 14 và thay thế cho đào bới thiết lập IntelliJ, một số thử và sai tiết lộ rằng bất cứ điều gì với mô hình

(anyfile.ext:line) 

trước bởi ít nhất một . trong giao diện điều khiển được lại vào một liên kết tệp nếu có bất kỳ tệp nào được gọi bằng tên đó, ví dụ: .(Whatever.java:55), trong không gian làm việc ngoại trừ các thư viện.

Tôi đang sử dụng đăng nhập. Vì vậy, ở mức tối thiểu trong logback.xml tôi để có được các liên kết đến các lớp học của tôi, tôi có trong mẫu thông điệp của tôi

.\(%class{0}.java:%line\) 
  • .\( \) -> Một dấu chấm phải đặt trước tên tập tin: mô hình dòng và tên tập tin: mô hình dòng kèm theo trong dấu ngoặc đơn. Logback yêu cầu dấu ngoặc đơn để thoát trong trường hợp này.
  • %class{0} -> Chỉ classname mà không có một gói
  • .java -> Vì vậy, nó phù hợp với tên tập tin hoàn chỉnh
  • :%line -> Là dòng ghi mã

Trong thực tế, tôi có những thứ khác luôn bao gồm ít nhất một . trước phần (filename:line), vì vậy nó cũng đang được IntelliJ chọn.

<pattern>%highlight(%-5level) %d{yyyy-MM-dd'T'HH:mm:ss.SSS} %yellow([%thread]) %blue(%logger{36}\(%class{0}.java:%line\)) %msg%n</pattern> 
+0

Cảm ơn, rất tuyệt! – Hejazi

+0

Cảm ơn, cảm ơn, cảm ơn rất nhiều !!!!!!! – varantes

+0

Với điều này, bạn chỉ nhận được các liên kết có thể nhấp cho các lớp của riêng bạn, tôi thích thêm% người gọi {1} vào cuối mẫu để có thể nhấp vào bất kỳ lớp nào. –

0

Để thực hiện mọi thứ REALLY hoạt động, bạn cần tuân thủ ký hiệu ngăn xếp đầy đủ.Giống như nó KHÔNG đủ để chỉ cần đặt một dấu chấm "." ở phía trước dấu ngoặc đơn. Nếu bạn có hai lớp có cùng tên nhưng các gói khác nhau, IntelliJ sẽ chọn lớp đầu tiên mà nó tìm thấy. Để có được điều này làm việc ngay cả trong trường hợp này, bạn cần phải viết

Fullyqualifiedclassname + "." + Methodname + "(" + simpleclassname + "java:" + linenumber + ")"

Nếu bạn không biết số dòng sử dụng ": 1" làm việc cho tôi

Các vấn đề liên quan