ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.
Aber es sieht auch so aus, als ob die Konfigurationsdatei gefunden wurde und nicht parsbar war:
log4j:WARN Continuable parsing error 2 and column 31
log4j:WARN Document root element "Configuration", must match DOCTYPE root "null".
log4j:WARN Continuable parsing error 2 and column 31
log4j:WARN Document is invalid: no grammar found.
log4j:ERROR DOM element is - not a <log4j:configuration> element.
log4j:WARN No appenders could be found for logger (kafka.utils.VerifiableProperties).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Stellen Sie sicher, dass Sie nicht mehrere log4j-Versionen in Ihrem Build-Pfad haben. Es sieht so aus, als ob es in der ersten Zeile um log4j 2.x geht und das letzte log4j:WARN und log4j:ERROR aus log4j 1.x besteht … sie haben verschiedene Konfigurationen..
– Mike D3ViD Tyson
14. September 2018 um 15:20 Uhr
Jeff Maaß
Problem 1
ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.
Entfernen Sie in Ihrem Projekt die JAR-Datei log4j-1.2 und fügen Sie stattdessen die Datei log4j-1.2-api-2.1.jar ein. Ich war mir nicht sicher, wie genau ich log4j 1.2 ausschließen sollte. Ich wusste, welche Abhängigkeit meines Projekts es erforderte. Also, mit etwas Lektüre, habe ich ein paar Sachen ausgeschlossen.
Ich bin mir nicht sicher, welcher der Ausschlüsse den Trick getan hat. Separat habe ich eine Abhängigkeit zur 1.2-API hinzugefügt, die eine Brücke zu 2.x bildet.
<!--
http://logging.apache.org/log4j/2.0/manual/migration.html
http://logging.apache.org/log4j/2.0/maven-artifacts.html
Log4j 1.x API Bridge
If existing components use Log4j 1.x and you want to have this logging
routed to Log4j 2, then remove any log4j 1.x dependencies and add the
following.
-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
<version>2.2</version>
</dependency>
Jetzt fließen die 1.2-Protokolle, die nur zur Konsole gingen, tatsächlich zu unseren 2.x-Appendern.
Sieht so aus, als hätten Sie die Antwort bereits gefunden. Beachten Sie, dass die log4j:WARN-Ausgabe von einer log4j-1.2-JAR-Datei erzeugt wird, die sich im Klassenpfad befindet. Möglicherweise möchten Sie dieses JAR aus dem Klassenpfad entfernen und stattdessen log4j-1.2-api-2.1.jar (die 1.2-Bridge, die Teil von log4j2 ist) verwenden. Siehe auch Logging.apache.org/log4j/2.x/faq.html#which_jars
– Remko Popma
18. Februar 2015 um 1:00 Uhr
Hey, @RemkoPopma, ich habe entdeckt, dass Sie zur API beitragen. 😉
– Paul Varga
18. Februar 2015 um 1:47 Uhr
Ich tue mein Bestes. Hatte aber in letzter Zeit keine Zeit… Wenn Sie helfen möchten, sind Beiträge willkommen!
– Remko Popma
18. Februar 2015 um 5:46 Uhr
@MaasSql, ist dieses Problem jetzt behoben oder haben Sie immer noch Probleme?
– Remko Popma
19. Februar 2015 um 1:51 Uhr
@RemkoPopma, Ihre Kommentare sind sinnvoll, aber ich bin sehr neu in Java / Maven, daher weiß ich nicht, wie ich die Bridge-API durch log4j-1.2 ersetzen soll.
– Jeff Maass
19. Februar 2015 um 19:11 Uhr
Conor Swensson
Wenn Sie nicht das Vermögen der log4j-1.2.jar auf Ihrem Klassenpfad haben, wie Renko in seinem Kommentar betont, sehen Sie nur die Nachricht keine log4j2-Konfigurationsdatei gefunden.
Dies ist ein Problem, wenn Ihre Konfigurationsdatei einen Fehler enthält, da Ihnen beim Start nicht mitgeteilt wird, wo das Problem liegt.
Zum Beispiel, wenn Sie eine log4j2.yaml-Datei haben, die log4j2 nicht verarbeiten kann, weil Sie zum Beispiel keinen YAML-Parser für Ihr Projekt konfiguriert haben oder Ihre Konfiguration einfach falsch ist. Sie werden auf die treffen keine log4j2-Konfigurationsdatei gefunden Nachricht, ohne weitere Informationen. Dies ist auch dann der Fall, wenn Sie eine gültige log4j2.xml-Datei haben, da nur log4j2 dies tun wird versuchen, die erste gefundene Konfigurationsdatei zu verarbeiten.
Ich habe festgestellt, dass der beste Weg, das Problem zu debuggen, darin besteht, die Konfigurationsdatei, die Sie verwenden möchten, gemäß dem oben erwähnten Befehlszeilenargument explizit anzugeben.
-Dlog4j.configurationFile=
Hoffentlich hilft Ihnen dies dabei, festzustellen, ob das Problem tatsächlich dadurch verursacht wird, dass Ihr Classloader die log4j2-Konfigurationsdatei oder etwas anderes in Ihrer Konfiguration nicht findet.
Aktualisieren
Sie können auch die folgende Eigenschaft verwenden, um die Standardebene des Statusloggers zu ändern, um weitere Informationen zu erhalten:
Es gibt ein Debug-Flag, aber es ist nicht gut dokumentiert: – Bis eine Konfiguration gefunden wird, kann die Statusprotokollierungsebene mit Systemeigenschaft gesteuert werden org.apache.logging.log4j.simplelog.StatusLogger.level. – Nachdem eine Konfiguration gefunden wurde, kann der Status-Logger-Level in der Konfigurationsdatei mit dem “status”-Attribut gesteuert werden, zum Beispiel: <Configuration status="trace">.
– Remko Popma
19. Februar 2015 um 3:40 Uhr
@RemkoPopma danke – ich habe diese Wohnung tatsächlich früher ausprobiert Dokumentation. Dort wird es jedoch als log4j2.StatusLogger.level angegeben, was nicht funktioniert. Die von Ihnen erwähnte Eigenschaft funktioniert.
– Conor Svensson
19. Februar 2015 um 7:25 Uhr
Ja, die Dokumente sind verwirrend. Zum Teil, weil sich das StatusLogger-Verhalten während der Konfiguration ändert. Ich werde die Dokumentation wie hier vorgeschlagen verbessern: issues.apache.org/jira/browse/LOG4J2-955
– Remko Popma
19. Februar 2015 um 7:29 Uhr
Ich hatte das gleiche Problem, aber ich bemerkte, dass ich keine log4j2.xml in meinem Projekt habe, nachdem ich im Internet über dieses Problem gelesen hatte, also kopierte ich den zugehörigen Code in einen Notizblock und stellte die Notizblockdatei auf xml zurück und fügte sie meinem Projekt unter hinzu Ordner Ressourcen. Für mich geht das.
Ich beschäftige mich seit einiger Zeit mit diesem Problem. Ich habe alles wie in diesem Beitrag beschrieben geändert und dachte sogar, dass Fehler aufgetreten sind. Stellen Sie in diesem Fall sicher, dass Sie das Projekt bereinigen, wenn Sie die Einstellungen in der .xml- oder .properties-Datei ändern. In Eclipse-Umgebung. Wählen Sie Projekt -> Bereinigen
LuQQiu
Ich verwende hive jdbc in einem Java-Maven-Projekt und habe die gleichen Probleme.
Meine Methode besteht darin, eine log4j2.xml-Datei unter src/main/java/resources hinzuzufügen
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MyClassName {
private static final Logger LOG = LoggerFactory.getLogger(MyClassName.class);
}
Stellen Sie sicher, dass Sie nicht mehrere log4j-Versionen in Ihrem Build-Pfad haben. Es sieht so aus, als ob es in der ersten Zeile um log4j 2.x geht und das letzte log4j:WARN und log4j:ERROR aus log4j 1.x besteht … sie haben verschiedene Konfigurationen..
– Mike D3ViD Tyson
14. September 2018 um 15:20 Uhr