2017-07-28 1 views
0

Ich habe eine log4j-Eigenschaftsdatei wie so definiert:Warum bekomme ich die DEBUG-Level-Protokollierung in der Konsole?

log4j.rootLogger=INFO, stdout 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

log4j.logger.com.github.user=DEBUG, file 
log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.File=target/cucumber-parser.log 
log4j.appender.file.MaxFileSize=5MB 
log4j.appender.file.MaxBackupIndex=10 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

Basierend auf meinem Verständnis soll INFO Ebene Protokollierung stdout (Konsole) geleitet werden und DEBUG sollte nur eine Datei geschrieben werden. Allerdings bekomme ich beide, INFO und DEBUG Ebene in der Konsole. Was mache ich falsch?

Antwort

0

ich es geschafft, mein Problem zu lösen, indem Sie die folgenden Zeile log4j.appender.stdout Anwendung:

log4j.appender.stdout.Threshold=INFO 

Mit dieser Linie auf die ursprüngliche Konfiguration hinzugefügt, die ich in meiner ursprünglichen Frage gestellt, nur die INFO-Ebene Protokolle zu bedruckenden Die Konsole und DEBUG werden wie gewünscht in eine Datei umgeleitet.

0

Da INFO-Ebene DEBUG-Ebene umfasst. Damit du beides siehst.

Weitere Logging Levels

0

Wenn Sie log4j doc überprüfen oder this tutorial Sie weitere Informationen über Ebenen sehen können, aber im Grunde: ALLE < DEBUG < INFO < < ERROR < FATAL < OFF

So log zeigt die gewählte WARN Ebene und alle Größer.

0

hinzufügen log4j.additivity.com.github.user=false.

Wie in Ihrer Konfiguration wird der Level com.github.user auf debug gesetzt. Und neben "Datei", wird es auch zu Root-Logger hinzufügen, so dass Sie Debug-Protokoll von com.github.user in der Konsole sehen können.

In der Tat, wenn Sie die Konfiguration auf diese Weise schreiben, Logger und Appender zu teilen, können Sie besser verstehen.

log4j.rootLogger=INFO, stdout 
log4j.logger.com.github.user=DEBUG, file 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.File=target/cucumber-parser.log 
log4j.appender.file.MaxFileSize=5MB 
log4j.appender.file.MaxBackupIndex=10 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

Für Logger, angegeben Sie com.github.user debuggen und alle anderen Informationen mit rootlogger Einstellung zu sein.

Dann wird com.github.user auf file gedruckt, und alle Protokolle werden auf der Konsole gedruckt. Und wenn Sie additivity einstellen, wird com.github.user aus rootlogger entfernt, so dass nur andere Protokolle in der Konsole angezeigt werden.

+0

Hallo, danke für deine Antwort aber ich bin mir sicher, dass es funktionieren wird, falls 'com.github.user' * * der Wurzelknoten in der Projekthierarchie ist. Ich habe es vorher versucht und nichts wurde auf der Konsole gedruckt. –

Verwandte Themen