2011-10-25 41 views
30

Làm cách nào để viết tắt/rút ngắn tên gói trong nhật ký được tạo bằng log4j. tức là thay vì com.longpackage.anotherpackage.lastpackage.MyClass tôi muốn c.l.a.l.MyClass. Tôi đã thấy điều này trong Artifactory nhật ký, nhưng không thể tìm cách đạt được điều này bằng cách sử dụng log4j.log4j: viết tắt/rút ngắn tên gói

+5

Nhưng nếu bạn không đọc qua tên gói dài, bạn có thực sự đang làm Java không? Bạn có thực sự nhận được toàn bộ Java Experience® không? Nghiêm túc, mặc dù câu hỏi hay. – andronikus

Trả lời

41

Nó chỉ ra rằng đây là có thể sử dụng log4j sau khi tất cả (thử nghiệm sử dụng v1.2.16), nhờ Tomasz Nurkiewicz chỉ cho tôi đến LogBack. Tính năng, ConversionWord, có sẵn bằng cách sử dụng bố cục EnhancedPatternLayout.

Từ javadoc

... For example, for the category name "alpha.beta.gamma" the pattern %c{2} will output the last two elements ("beta.gamma"), %c{-2} will remove two elements leaving "gamma", %c{1.} will output "a.b.gamma" ...

Tôi đang sử dụng JBoss và phải nâng cấp log4j và sử dụng bố trí ở trên.

+3

Ví dụ: 'log4j.appender.stdout.layout = org.apache.log4j.EnhancedPatternLayout log4j.appender.stdout.layout.ConversionPattern =% - 5p% c {1.} [% T]:% m% n' – felvhage

+2

Mã Java đằng sau "ConversionWord" của logback/LoggerConverter là lớp TargetLengthBasedClassNameAbbreviator: https://github.com/qos-ch/logback/blob/master/logback-classic/src/main/java/ch/qos/ logback/classic/pattern/TargetLengthBasedClassNameAbbreviator.java. – buzz3791

27

Artifactory sử dụng Logback:

Các dự án nổi tiếng dựa vào logback:

  • [...]

  • Artifactory

trong đó có tính năng tuyệt vời này được gọi là Conversion Word:

Conversion specifier | Logger name    | Result 

%logger    | mainPackage.sub.sample.Bar | mainPackage.sub.sample.Bar 
%logger{0}   | mainPackage.sub.sample.Bar | Bar 
%logger{5}   | mainPackage.sub.sample.Bar | m.s.s.Bar 
%logger{10}   | mainPackage.sub.sample.Bar | m.s.s.Bar 
%logger{15}   | mainPackage.sub.sample.Bar | m.s.sample.Bar 
%logger{16}   | mainPackage.sub.sample.Bar | m.sub.sample.Bar 
%logger{26}   | mainPackage.sub.sample.Bar | mainPackage.sub.sample.Bar 

* Tôi nhớ bảng trong SO markdown sooo nhiều ...

+0

Đẹp! "Từ chuyển đổi" là những gì tôi đã sau. – asgs

0

Có vẻ như bạn cần phải thực hiện của riêng bạn Appender để làm công việc này trong log4j.

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