log4j:缩写/缩短包名

时间:2011-10-25 15:42:56

标签: java log4j logging

如何在使用log4j生成的日志中缩写/缩短包名称。即代替com.longpackage.anotherpackage.lastpackage.MyClass我想要c.l.a.l.MyClass。我在Artifactory日志中已经看到了这一点,但无法想象如何使用log4j来实现这一点。

2 个答案:

答案 0 :(得分:48)

事实证明,毕竟使用log4j是可行的(使用v1.2.16测试),感谢Tomasz Nurkiewicz指向我LogBack。可以使用EnhancedPatternLayout布局提供ConversionWord功能。

来自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" ...

我正在使用JBoss并且必须升级log4j并使用上面的布局。

答案 1 :(得分:35)

Artifactory使用Logback

  

已知依赖于logback的项目:

     
      
  • [...]

  •   
  • Artifactory的

  •   

有一个名为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|

*我错过SO标记中的表格太多了......