Logger in mehrere Dateien mit log4J

Status
Nicht offen für weitere Antworten.

Foermchen82

Top Contributor
Hallo zusammen,

ich versuch grad mit log4J mehrere Logger zu konfigurieren und in veschiedene Dateien zu loggen.

Konfiguriert hab ich das:

log4j.rootLogger=DEBUG, ConsoleAppender, FileAppender
log4j.logger.TransactionLogger= DEBUG, A3

log4j.appender.ConsoleAppender=org.apache.log4j.ConsoleAppender
log4j.appender.ConsoleAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.ConsoleAppender.layout.ConversionPattern=%d{ISO8601} %-5p [%-16t] %-25c{1} %m%n

log4j.appender.FileAppender=org.apache.log4j.RollingFileAppender
log4j.appender.FileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.FileAppender.file=cient.log
log4j.appender.FileAppender.maxFileSize=1024KB
log4j.appender.FileAppender.layout.ConversionPattern=%d{ISO8601} %-5p [%-16t] %-25c{1} %m%n

log4j.appender.A3=org.apache.log4j.RollingFileAppender
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.maxFileSize=1024KB
log4j.appender.A3.layout.ConversionPattern=%d{ISO8601} %-5p [%-16t] %-25c{1} %m%n
log4j.appender.A3.file=cient3.log

in meiner Klasse habe ich folgende Logger instanzen:

transactionLogger= Logger.getLogger("TransactionLogger");
logger = Logger.getLogger(MainController.class);

und in diese beiden logge ich je nach bedarf.

der Transactionlogger macht das was er soll. Aber der im log-file des Rootloggers und auf der Konsole landen auch die Ausgaben die ich nur in den TransactionLogger schreibe.


Wieso????
 
Du musst für jeden Appender die Logkategorien einschränken.

Beispiel:
root loggt in einen allgemeinen FileAppender.

Logger A loggt in Appender F1 (explizit konfigurieren)
Logger B loggt in Appender F2 (explizit konfigurieren)

Google mal kräftig, da gibt es eine Menge (passender) Beispiele.

Tipp: konfiguriere Log4J über XML Dateien... das ist einfacher...
 
Ich hab ja für den rootLogger andere Appender als für den Transactionlogger.
Aber folgende Zeile hat geholfen:

log4j.additivity.TransactionLogger = false


komischerweise dachte ich, dass additivity steuert, ob der kindlogger vom parent erbt und nicht anderherum.

Naja, aber jetzt funktioniert es
 
GilbertGrape hat gesagt.:
FArt hat gesagt.:
Tipp: konfiguriere Log4J über XML Dateien... das ist einfacher...

Warum das? Ich seh da keinen großen Unterschied...

Die meisten Menschen könnnen mit formatiertem XML Code besser umgehen als mit unformatierte Propertyfiles, besonders wenn die Properties ellenlang werden.

Bei kleinen Konfigurationsdateien mag das noch egal sein, aber komplexe Logkonfigurationen sind als Propertydatei einfach nicht mehr wartbar.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben