2010-05-04 21 views
9

Si configuro el nivel de registro en DEPURAR, se registrarán/imprimirán todos los mensajes con nivel de registro> = DEPURAR. Pero, ¿puedo configurar el nivel de registro solo para DEPURAR, de modo que se impriman mensajes con nivel de registro solo con DEPURACIÓN? ¿O puede dar un rango como imprimir todos los mensajes cuyo nivel de registro es> = DEPURAR pero < ERROR?Es posible registrar solo mensajes de un nivel con Log4J

+0

Yo no lo creo, no. – skaffman

+0

Si planea hacer algo en contra del diseño original, puede modificar su código fuente. Bueno, ¿por qué no seguir el diseño? –

+0

He estado intentando descubrir lo mismo por MUCHO tiempo. – McTrafik

Respuesta

8

¿Tal vez puedas usar un filtro de escala de nivel?

En alguna situación, debe escribir registros en diferentes salidas de acuerdo con el nivel. ¿Cómo se puede hacer simplemente configurando Log4j? Hay algunos métodos a continuación.

http://wiki.apache.org/logging-log4j/LogToAppenderByLevel

1

Como se ha dicho Jarle tienes que usar LevelMatchFilter. Voy a demostrar que con un examen sencillo:

log4j.rootLogger = WARN, admin 
log4j.appender.admin=org.apache.log4j.rolling.RollingFileAppender 
     log4j.appender.admin.rollingPolicy = org.apache.log4j.rolling.TimeBasedRollingPolicy 
     log4j.appender.admin.rollingPolicy.FileNamePattern = Files\\TestLevels-%d{dd-MM-yyy}.txt 
     log4j.appender.admin.layout = org.apache.log4j.PatternLayout 
     log4j.appender.admin.layout.ConversionPattern = Date: %d{dd-MM-yyyy} Time: %d{HH:mm:ss} Message [%m]%n 
     log4j.appender.admin.filter.01=org.apache.log4j.varia.LevelMatchFilter 
     log4j.appender.admin.filter.01.LevelToMatch=FATAL 
     log4j.appender.admin.filter.01.AcceptOnMatch=false 
     log4j.appender.admin.filter.02=org.apache.log4j.varia.LevelMatchFilter 
     log4j.appender.admin.filter.02.LevelToMatch=ERROR 
     log4j.appender.admin.filter.02.AcceptOnMatch=true 
     log4j.appender.admin.filter.03=org.apache.log4j.varia.LevelMatchFilter 
     log4j.appender.admin.filter.03.LevelToMatch=WARN 
     log4j.appender.admin.filter.03.AcceptOnMatch=false 

En mi fuente añado solamente ERROR mensajes al archivo con el nombre TestLevels.txt

Cuestiones relacionadas