2012-01-31 15 views
5

Devo registrare i messaggi di debug della stessa classe in file diversi.
Quello che voglio dire è che dalla stessa classe ho bisogno di una specifica istruzione di debug per andare a fileA mentre un'altra specifica istruzione di debug per andare a fileB.java log4j scegliere quale file registrare a

Nel caso non sia chiaro, ciò che sto cercando di fare è registrare i messaggi di rete in un file completamente separato rispetto agli altri messaggi di registrazione che questa classe emette.

Se faccio

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

Poi la registrazione della mia classe andrà a entrambi i file (dal momento che è dalla stessa confezione).

Come posso configurare log4j in modo che sia possibile selezionare quale istruzione di registrazione dalle classi sotto com.test.modules passare a quale file appender?

risposta

6

Utilizzare un Logger separato per ogni file:

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()); 

e definire l'appender per ogni Logger come al solito.

2

Questo sembra davvero uno scenario in cui devono essere utilizzati più logger. Configura un logger separato per il networking e specifica semplicemente un appender diverso.

Problemi correlati