488 Stimmen

Es konnten keine Appenders für logger(log4j) gefunden werden?

Ich habe log4j zu meinem Buildpath hinzugefügt, aber ich erhalte die folgende Meldung, wenn ich meine Anwendung ausführe:

log4j:WARN No appenders could be found for logger (dao.hsqlmanager).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

Was bedeuten diese Warnungen? Was ist der Absender hier?

2voto

Kira Resari Punkte 1206

Bei mir war der Grund offenbar ein anderer, und die Fehlermeldung war irreführend.

Mit nur dies in meinem build.gradle, würde es beschweren, dass slf4j am Anfang des Protokolls fehlte, aber immer noch Dinge protokollieren, wenn auch in einem schlechten Format:

    compile 'log4j:log4j:1.2.17'

Das Hinzufügen dieser Abhängigkeit führte bei mir zu der besprochenen Fehlermeldung "Es konnten keine Appenders gefunden werden", obwohl ich sie in src/main/java/log4j.properties :

    compile 'log4j:log4j:1.2.17'
    compile 'org.slf4j:slf4j-log4j12:1.7.25'

Schließlich löste das Hinzufügen der folgenden Abhängigkeit (die ich nur durch Kopieren aus einem anderen Projekt erraten hatte) das Problem:

    compile 'log4j:log4j:1.2.17'
    compile 'org.slf4j:slf4j-log4j12:1.7.25'
    compile 'commons-logging:commons-logging:1.2'

Ich weiß nicht, warum, aber damit funktioniert es. Irgendwelche Erkenntnisse darüber?

2voto

ph0enix Punkte 771

Wenn Sie Eclipse verwenden und dieses Problem aus dem Nichts auftauchte, nachdem vorher alles gut funktionierte, versuchen Sie, zu Project - Clean - Clean .

2voto

schlebe Punkte 2712

Log4J zeigt diese Warnmeldung an, wenn Log4j Java Code sucht, um eine erste Logzeile in Ihrem Programm zu erstellen.

In diesem Moment macht Log4j 2 Dinge

  1. es suchen zu finden log4j.properties Datei
  2. sucht er nach der Instanziierung des Appenders, der in log4j.properties

Si log4J findet nicht log4j.properties Datei oder wenn der Appender in log4j.rootlogger sind nicht an anderer Stelle definiert in log4j.properties Datei wird die Warnmeldung angezeigt.

ACHTUNG: Der Inhalt der Datei Eigenschaften muss korrekt sein.

Der folgende Inhalt ist NICHT korrekt

log4j.rootLogger=file

log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=c:/Trace/MsgStackLogging.log
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%m%n
log4j.appender.FILE.ImmediateFlush=true
log4j.appender.FILE.Threshold=debug
log4j.appender.FILE.Append=false

denn file appender wird in LOWER-CASE deklariert in log4j.rootlogger Anweisung und in der log4j.appender-Anweisung unter Verwendung von GROSSBUCHSTABEN definiert !

Eine korrekte Datei würde lauten

log4j.rootLogger=FILE

log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=c:/Trace/MsgStackLogging.log
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%m%n
log4j.appender.FILE.ImmediateFlush=true
log4j.appender.FILE.Threshold=debug
log4j.appender.FILE.Append=false

Wenn MAVEN verwendet wird, müssen Sie die log4j.properties-Dateien in src/main/resources UND einen MAVEN-Bau beginnen.

Die Datei Log4j.properties wird dann kopiert in target/classes Ordner.

Log4J verwendet die log4j.properties Datei, die es in target/classes !

1voto

Gangnus Punkte 23092

Der Grund dafür kann das Fehlen des Wortes static in einigen:

final static Logger logging = Logger.getLogger(ProcessorTest.class);

Wenn ich Logger zum Instanzfeld mache, erhalte ich genau diese Warnung:

No appenders could be found for logger (org.apache.kafka.producer.Sender)

Was noch schlimmer ist, die Warnung weist nicht auf ProcessorTest , wo der Fehler liegt, sondern auf eine ganz andere Klasse (Sender) als Problemquelle. Das Klasse hat einen korrekt eingestellten Logger und muss nicht geändert werden! Wir könnten ewig nach dem Problem suchen!

1voto

Jasper Punkte 1197

Ich habe diese Fehlermeldung in IntelliJ erhalten, als ich versuchte, Unit-Tests auszuführen. Ich hatte sowohl Eclipse als auch IntelliJ zur gleichen Zeit geöffnet, was dieses Problem verursacht haben könnte. Nachdem ich beide IDEs geschlossen und einen Maven-Befehlszeilen-Build ausgeführt hatte, war der Fehler verschwunden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X