2012-01-31 26 views
5

Necesito registrar los mensajes de depuración de la misma clase en diferentes archivos.
Lo que quiero decir es que de la misma clase necesito una instrucción de depuración específica para ir a fileA, mientras que otra instrucción de depuración específica para ir a fileB.java log4j elegir qué archivo registrar en

En caso de que no esté claro, lo que intento hacer es registrar mensajes de red en un archivo completamente separado que otros mensajes de inicio de sesión que esta clase genera.

Si hago

<logger name="com.test.modules" additivity="false" > 
    <priority value="debug"/> 
    <appender-ref ref="netWorkCommunication"/> 
    <appender-ref ref="generalDebug"/> 
    </logger> 

A continuación, el registro de mi clase va a ir a ambos archivos (ya que se trata del mismo paquete).

¿Cómo puedo configurar log4j para que pueda seleccionar qué declaración de registro de las clases en com.test.modules vaya a qué archivo appender?

Respuesta

6

Utilice un registrador independiente para cada archivo:

private static Logger log = Logger.getLogger(YourClass.class); 
private static Logger networkLog = Logger.getLogger("network." + YourClass.class.getName()); 
private static Logger httpLog = Logger.getLogger("http." + YourClass.class.getName()); 

y definir el appender para cada registrador como de costumbre.

2

Esto realmente parece un escenario donde se deben utilizar varios registradores. Configure un registrador separado para redes y simplemente especifique un appender diferente para él.