2011-10-25 7 views
30

Cómo abreviar/acortar los nombres de los paquetes en el registro generado usando log4j. es decir, en lugar de com.longpackage.anotherpackage.lastpackage.MyClass quiero c.l.a.l.MyClass. Lo he visto en los registros Artifactory, pero no sé cómo lograrlo con log4j.log4j: abreviar/acortar nombres de paquetes

+5

Pero si no está leyendo los nombres largos de los paquetes, ¿realmente está haciendo Java? ¿De verdad estás obteniendo todo el Java Experience®? En serio, buena pregunta. – andronikus

Respuesta

41

Resulta que esto es posible usando log4j después de todo (probado usando v1.2.16), gracias a Tomasz Nurkiewicz por señalarme a LogBack. La característica, ConversionWord, está disponible usando el diseño EnhancedPatternLayout.

Desde el 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" ...

estoy usando JBoss y tuvo que actualizar log4j y el uso de la disposición anterior.

+3

Ejemplo: 'log4j.appender.stdout.layout = org.apache.log4j.EnhancedPatternLayout log4j.appender.stdout.layout.ConversionPattern =% - 5p% c [% t]:% m% {1.} n' – felvhage

+2

El código de Java detrás de "ConversionWord"/LoggerConverter de logback es la clase TargetLengthBasedClassNameAbbreviator: https://github.com/qos-ch/logback/blob/master/logback-classic/src/main/java/ch/qos/ logback/classic/pattern/TargetLengthBasedClassNameAbbreviator.java. – buzz3791

27

Artifactory utiliza Logback:

Proyectos conocidos que depender de logback:

  • [...]

  • Artifactory

que tiene esta característica interesante llamada 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 

* echo de menos mesas en la reducción del precio tan mucho ...

+0

¡Agradable! "Palabra de conversión" es lo que buscaba. – asgs

0

parece que necesita para implementar su propia Appender para hacer este trabajo en log4j.

Cuestiones relacionadas