2012-04-11 11 views
5

Estoy tratando de crear 'diferentes' appenders basado en diferentes niveles, pero hasta ahora no he podido encontrar una manera de aislar los niveles de registro ....Creación de diferentes registros basado en el nivel de registro de log4j

<category name="com.sample" additivity="false"> 
    <priority value="INFO" /> 
    <appender-ref ref="AllAsync"/> 
    <appender-ref ref="ConsoleAppender"/> 
    </category> 

Necesito una forma de poder aterrizar solo INFO registros priorizados para ser añadidos. Como el registro de nivel INFO también pone en los registradores marcados DEBUG ... esto no me está ayudando.

Otra cosa es 'mismo' paquete que no podía definir diferentes appenders de registro:

 <category name="com.sample" additivity="false"> 
      <priority value="INFO" /> 
      <appender-ref ref="AllAsync"/> 
      <appender-ref ref="ConsoleAppender"/> 
      </category> 

    <category name="com.sample" additivity="false"> 
     <priority value="DEBUG" /> 
     <appender-ref ref="AllAsync"/> 
     <appender-ref ref="ConsoleAppender"/> 
     </category> 

Aquí estoy consiguiendo el error algo como:

log4j:ERROR Attempted to append to closed appender named [AllAsync]. 
log4j:ERROR Attempted to append to closed appender named [ConsoleAppender]. 
log4j:ERROR Attempted to append to closed appender named [ConsoleAppender]. 
log4j:ERROR Attempted to append to closed appender named [ConsoleAppender]. 
+1

Puede usar el umbral para evitar que algo inferior al nivel X esté en un archivo de registro, pero no creo que haya una forma de evitar que el registro X sea más alto que el del archivo de registro. –

Respuesta

2

Puede filtrar por nivel de registro exacta usando un LevelMatchFilter de acuerdo con log4j Faq y wiki.

<filter class="org.apache.log4j.varia.LevelMatchFilter"> 
     <param name="LevelToMatch" value="info"/> 
     <param name="AcceptOnMatch" value="true"/> 
</filter> 

Ejemplo here.

Cuestiones relacionadas