2012-01-31 12 views
5

Potrzebuję logować wiadomości do debugowania z tej samej klasy do różnych plików.
Co mam na myśli to, że z tej samej klasy potrzebuję konkretnej instrukcji debugowania, aby przejść do fileA, podczas gdy inne konkretne polecenie debugowania, aby przejść do fileB.java log4j wybierz plik do zalogowania do

W przypadku, gdy nie jest jasne, próbuję zrobić to, aby logować wiadomości sieciowe do całkowicie oddzielnego pliku niż inne komunikaty logów, które ta klasa generuje.

Jeśli robię

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

Następnie rejestrowanie z mojej klasy trafi do obu plików (ponieważ jest z tego samego pakietu).

Jak skonfigurować log4j, aby można było wybrać, która instrukcja rejestrowania z klas pod numerem com.test.modules przejdzie na stronę , która aplikacja do wczytywania plików ma?

Odpowiedz

6

Użyj osobnego Logger dla każdego pliku:

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

appender i zdefiniować dla każdego rejestratora, jak zwykle.

2

To naprawdę wygląda na scenariusz, w którym powinno się używać wielu rejestratorów. Skonfiguruj osobny program do obsługi sieci i po prostu określ dla niego innego programistę.

Powiązane problemy