Gibt es eine Möglichkeit, log4j anzuweisen, sein Protokoll in die Datei und in die Konsole zu schreiben? danke gibt es meine Eigenschaften:
log4j.rootLogger=DEBUG,console,R
log4j.rootLogger=INFO, FILE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p - %m%n
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.File=log4j.log
log4j.appender.FILE.MaxFileSize=512KB
log4j.appender.FILE.MaxBackupIndex=3
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p - %m%n
Antworten:
Ihre Root-Logger-Definition ist etwas verwirrt. Siehe die log4j-Dokumentation .
Dies ist eine Standard-Java-Eigenschaftendatei. Dies bedeutet, dass Zeilen als Schlüssel-Wert-Paare behandelt werden. Ihre zweite
log4j.rootLogger
Zeile überschreibt die erste, was erklärt, warum Sie im Appender nichts sehenconsole
.Sie müssen Ihre beiden
rootLogger
Definitionen zu einer zusammenführen. Es sieht so aus, als würden Sie versuchen,DEBUG
Nachrichten an die Konsole undINFO
Nachrichten an die Datei zu senden. Der Root-Logger kann nur eine Ebene haben. Sie müssen daher Ihre Konfiguration ändern, damit die Appender über die entsprechenden Ebenen verfügen.Obwohl ich nicht überprüft habe, ob dies korrekt ist, würde ich vermuten, dass es ungefähr so aussieht:
Beachten Sie, dass Sie auch einen Fehler im Gehäuse haben - Sie haben Konsolen-Kleinbuchstaben an einer Stelle und in CAPS an einer anderen.
quelle
Ihre log4j-Datei sollte ungefähr so aussehen wie die folgenden Kommentare.
# Define the types of logger and level of logging log4j.rootLogger = DEBUG,console, FILE # Define the File appender log4j.appender.FILE=org.apache.log4j.FileAppender # Define Console Appender log4j.appender.console=org.apache.log4j.ConsoleAppender # Define the layout for console appender. If you do not # define it, you will get an error log4j.appender.console.layout=org.apache.log4j.PatternLayout # Set the name of the file log4j.appender.FILE.File=log.out # Set the immediate flush to true (default) log4j.appender.FILE.ImmediateFlush=true # Set the threshold to debug mode log4j.appender.FILE.Threshold=debug # Set the append to false, overwrite log4j.appender.FILE.Append=false # Define the layout for file appender log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.conversionPattern=%m%n
quelle
Dies funktioniert gut für Konsolen im Debug-Modus
quelle
Schreiben Sie den Root-Logger wie folgt für die Protokollierung sowohl auf der Konsole als auch auf der DATEI
log4j.rootLogger = FEHLER, Konsole, DATEI
Schreiben Sie die entsprechenden Definitionen wie Ziel, Layout und ConversionPattern (MaxFileSize für Datei usw.).
quelle