log4j: Protokollausgabe einer bestimmten class zu einem bestimmten Appender

Ich benutze log4j und möchte die Ausgabe bestimmter Logger zu bestimmten Dateien routen.

Ich habe bereits mehrere Appender an Ort und Stelle. Um nun das Debuggen zu erleichtern, möchte ich log4j mitteilen, dass die von einer bestimmten class (z. B. foo.bar.Baz) erzeugte Ausgabe in eine bestimmte Protokolldatei geschrieben werden soll.

Kann das gemacht werden?

Ein Beispiel:

log4j.rootLogger=ERROR, logfile log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender log4j.appender.logfile.datePattern='-'dd'.log' log4j.appender.logfile.File=log/radius-prod.log log4j.appender.logfile.layout=org.apache.log4j.PatternLayout log4j.appender.logfile.layout.ConversionPattern=%-6r %d{ISO8601} %-5p %40.40c %x - %m\n log4j.logger.foo.bar.Baz=DEBUG, myappender log4j.additivity.foo.bar.Baz=false log4j.appender.myappender=org.apache.log4j.DailyRollingFileAppender log4j.appender.myappender.datePattern='-'dd'.log' log4j.appender.myappender.File=log/access-ext-dmz-prod.log log4j.appender.myappender.layout=org.apache.log4j.PatternLayout log4j.appender.myappender.layout.ConversionPattern=%-6r %d{ISO8601} %-5p %40.40c %x - %m\n 

Hier ist eine Antwort in Bezug auf die XML-Konfiguration, beachten Sie, dass, wenn Sie der Datei appender kein ConversionPattern es 0-Byte-Datei erstellt und nichts schreibt:

 < ?xml version="1.0" encoding="UTF-8" ?> < !DOCTYPE log4j:configuration SYSTEM "log4j.dtd">