2012-02-20 27 views
12

Actualmente estoy trabajando en un proyecto de Java y estamos utilizando el registro. Cuando se realiza un registro, siempre se imprime en texto negro, sea cual sea el nivel de registro (INFO, ERROR, etc.)Cómo cambiar el color de la salida de registro log4j

¿Cómo puedo anular el color de estas salidas para que, por ejemplo, todos los registros de ERROR sean rojos, mientras que todos WARN registros serán de color naranja, etc.

Gracias

EDIT: me las arreglé para descargar el archivo ANSIColorLayout y mis log4j.properties ahora se refiere a ella. Sin embargo consigo los siguientes errores:

log4j:WARN No such property [all] in org.apache.log4j.ConsoleAppender. 
log4j:WARN No such property [reset] in org.apache.log4j.ConsoleAppender. 
log4j:WARN No such property [stacktrace] in org.apache.log4j.ConsoleAppender. 
log4j:WARN No such property [info] in org.apache.log4j.ConsoleAppender. 
log4j:WARN No such property [error] in org.apache.log4j.ConsoleAppender. 
log4j:WARN No such property [defaultcolor] in org.apache.log4j.ConsoleAppender. 

Mi archivo log4j.properties se ve así:

log4j.rootLogger = DEBUG, CA, FA 

log4j.appender.CA = org.apache.log4j.ConsoleAppender 
log4j.appender.CA.layout = balle.logging.ANSIColorLayout 
log4j.appender.CA.layout.ConversionPattern=%-5p [%d{MM-dd-yyyy HH:mm:ss}] %c - %m%n 
log4j.appender.CA.all=\u001B[1;37m log4j.appender.A1.fatal=\u001B[1;31m 
log4j.appender.CA.error=\u001B[0;31m log4j.appender.A1.warn=\u001B[1;33m 
log4j.appender.CA.info=\u001B[0;37m log4j.appender.A1.debug=\u001B[0;36m 
log4j.appender.CA.reset=\u001B[1;37m 
log4j.appender.CA.stacktrace=\u001B[0;31m 
log4j.appender.CA.defaultcolor=\u001B[1;37m 

Mi conjetura es que se supone que debo usar mi propia ConsoleAppender personalizada? ¿Alguien tiene alguna idea?

Gracias

Respuesta

6

Puede descargar uno de los diversos ANSIColorLayout.java aplicación. Estos "registradores de color" funcionan al extender la clase PatternLayout.

A continuación, puede hacer algo como esto en su conf log4j:

og4j.appender.stdout.layout=com.acme.ANSIColorLayout 

Aquí hay un enlace a una ANSIColorLayout.java listo para usar:

http://code.google.com/p/a-distributed-file-system/source/browse/trunk/DistributedFileSystem/ui/net/dfs/ui/ANSIColorLayout.java

+0

En caso de que el enlace sea roto, puedes buscar en Google * * ANSIColorLayout extiende PatternLayout "* y encontrarás otros enlaces:) – TacticalCoder

+0

Esto puede parecer una pregunta tonta, pero ¿cómo puedo editar log4j conf para usar la clase de color? ? No estoy seguro de tenerlo? –

+0

@Dan_Dan_Man: depende del tipo de archivo log4j conf que esté utilizando. Añadí la línea que permite cambiar la salida * stdout * para usar el registrador de color. – TacticalCoder

Cuestiones relacionadas