log4j:缩写/缩短包名

n00*_*13f 42 java logging log4j

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

n00*_*13f 51

事实证明,毕竟使用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并使用上面的布局.

  • 示例:`log4j.appender.stdout.layout = org.apache.log4j.EnhancedPatternLayout log4j.appender.stdout.layout.ConversionPattern =% - 5p%c {1.} [%t]:%m%n` (6认同)
  • logback的"ConversionWord"/ LoggerConverter背后的Java代码是TargetLengthBasedClassNameAbbreviator类:https://github.com/qos-ch/logback/blob/master/logback-classic/src/main/java/ch/qos/logback/classic /pattern/TargetLengthBasedClassNameAbbreviator.java. (2认同)
  • log4j:错误类别选项“1”。不是十进制整数。 (2认同)

Tom*_*icz 38

Artifactory使用Logback:

已知依赖于logback的项目:

  • [...]

  • Artifactory的

它有一个很好的功能,称为转换字:

|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|
Run Code Online (Sandbox Code Playgroud)

*我在SO标记中错过桌子太多了...