wake-up-neo.net

Es wurde keine log4j2-Konfigurationsdatei gefunden. Standardkonfiguration verwenden: Nur Fehler in der Konsole protokollieren

$ Java -Dlog4j.configuration=file:///path/to/your/log4j2.xml -jar /path/to/your/jar_file.jar

Auf die Konsole geschrieben bekommen Sie

ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.

Es sieht aber auch so aus, als ob die Konfigurationsdatei gefunden wurde und nicht analysiert werden konnte:

    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.
38
Jeff Maass

Ich habe mich schon eine Weile mit diesem Problem beschäftigt. Ich habe alles wie in diesem Beitrag beschrieben geändert und sogar gedacht, dass Fehler aufgetreten sind. Stellen Sie in diesem Fall sicher, dass Sie das Projekt bereinigen, wenn Sie Einstellungen in der .xml- oder .properties-Datei ändern. In der Eclipse-Umgebung. Wählen Sie Projekt -> Reinigen

3
Phatee P

Problem 1

ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.

Lösung 1

So arbeiten Sie mit Version 2 von log4j aka "log4j2" 

-Dlog4j.configuration=

sollte lesen

-Dlog4j.configurationFile=

Problem 2

log4j:WARN ....

Lösung 2

Deaktivieren Sie in Ihrem Projekt nicht die log4j-1.2-JAR und fügen Sie stattdessen die log4j-1.2-api-2.1.jar hinzu. Ich war mir nicht sicher, wie genau ich log4j 1.2 ausschließen soll. Ich wusste, dass die Abhängigkeit meines Projekts es erfordert. Mit etwas Lesen schloss ich also ein paar Sachen aus.

<dependency>
    <groupId>org.Apache.kafka</groupId>
    <artifactId>kafka_2.10</artifactId>
    <version>0.8.2.0</version>
    <exclusions>
        <exclusion>
            <groupId>org.Apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>                
        </exclusion>
        <exclusion>
            <groupId>org.Apache.log4j</groupId>
            <artifactId>log4j-core</artifactId>
        </exclusion>
        <exclusion>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
        </exclusion>          
    </exclusions>
</dependency>

Ich bin mir nicht sicher, welcher der Ausschlüsse den Trick gemacht hat. Separat habe ich eine Abhängigkeit von der 1.2-API, die zu 2.x führt, hinzugefügt.

<!--
    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>

Die 1.2-Protokolle, die nur zur Konsole gingen, fließen nun tatsächlich zu unseren 2.x-Appendern.

50
Jeff Maass

Wenn Sie nicht über das Vermögen von log4j-1.2.jar als Renko in seinem Kommentar in Ihrem Klassenpfad verfügen, wird nur die Nachricht no log4j2 Konfigurationsdatei angezeigt.

Dies ist ein Problem, wenn Ihre Konfigurationsdatei einen Fehler enthält, da Sie nicht wissen, wo das Problem beim Start liegt.

Zum Beispiel, wenn Sie über eine log4j2.yaml -Datei verfügen, die von log4j2 nicht verarbeitet werden kann, weil zum Beispiel Sie haben keinen YAML-Parser für Ihr Projekt konfiguriert oder Ihre Konfiguration ist einfach falsch. Sie finden die Konfigurationsdatei no log4j2 found ohne weitere Informationen. Dies ist auch der Fall, wenn Sie über eine gültige log4j2.xml-Datei verfügen, da log4j2 nur versucht, die erste gefundene Konfigurationsdatei zu verarbeiten .

Der beste Weg, das Problem zu beheben, besteht darin, die Konfigurationsdatei, die Sie verwenden möchten, explizit mit dem Befehlszeilenargument oben anzugeben.

-Dlog4j.configurationFile=

Hoffentlich hilft Ihnen das dabei herauszufinden, ob das Problem tatsächlich dadurch verursacht wird, dass Ihr Klassenladeprogramm die Konfigurationsdatei log4j2 oder etwas anderes in Ihrer Konfiguration nicht findet.

Update

Sie können auch die untenstehende Eigenschaft verwenden, um die Standardstufe des Statusprotokollierers zu ändern, um weitere Informationen zu erhalten:

-Dorg.Apache.logging.log4j.simplelog.StatusLogger.level=<level>
9
Conor Svensson

Ich verwende Hive jdbc in einem Java-Maven-Projekt und habe die gleichen Probleme.

Meine Methode ist das Hinzufügen einer log4j2.xml-Datei unter src/main/Java/resources

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MyClassName {
    private static final Logger LOG = LoggerFactory.getLogger(MyClassName.class);
}

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Logger name="<your_package_name>.<your_class_name>" level="debug">
        <AppenderRef ref="Console"/>
        </Logger>
        <Root level="WARN">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>
4
LuQQiu

ich hatte dasselbe Problem, aber ich bemerkte, dass ich in meinem Projekt keine log4j2.xml habe, nachdem ich im Netz über dieses Problem gelesen hatte. Also habe ich den zugehörigen Code in einen Notizblock kopiert und die Notepad-Datei in xml zurückgesetzt und meinem Projekt unter hinzugefügt Ordnerressourcen. Für mich geht das.

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
  <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="DEBUG">
  <AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
2
kykbr

Ich erhalte diese Fehlermeldung, weil die log4j2-Datei aus meinem src-Ordner gelöscht wurde

Fügen Sie einfach die XML-Datei im src-Ordner hinzu

<Appenders>
    <Console name="Console" target="SYSTEM_OUT">
        <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" />
    </Console>

    <RollingFile name="RollingFile" filename="logs/B2CATA-hybrid.log"
        filepattern="${logPath}/%d{yyyyMMddHHmmss}-fargo.log">
        <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" />
        <Policies>
            <SizeBasedTriggeringPolicy size="100 MB" />
        </Policies>
        <DefaultRolloverStrategy max="20" />
    </RollingFile>

</Appenders>
<Loggers>
   <Logger name="com.pragiti." level="trace" />
    <Root level="info">
        <AppenderRef ref="Console" />
        <AppenderRef ref="RollingFile" />
    </Root>
</Loggers>

1
komal sarode

In meinem Fall verwende ich die log4j2 Json-Datei log4j2.json im Klassenpfad meines Gradle-Projekts, und ich habe den gleichen Fehler erhalten.

Die Lösung bestand darin, die Abhängigkeit von JSON zu meinen Gradle-Abhängigkeiten zu erweitern. 

compile group:"com.fasterxml.jackson.core", name:"jackson-core", version:'2.8.4'
compile group:"com.fasterxml.jackson.core", name:"jackson-databind", version:'2.8.4'
compile group:"com.fasterxml.jackson.core", name:"jackson-annotations", version:'2.8.4'

Siehe auch Dokumentation von log4j2 :

Die JSON-Unterstützung verwendet den Jackson Data Processor zum Analysieren der JSON-Datei Dateien. Diese Abhängigkeiten müssen zu einem Projekt hinzugefügt werden, das .__ verwenden möchte. JSON für die Konfiguration:

1
H6.

Sachen, die ich überprüfe, 

1) Stellen Sie sicher, dass es keine oder log4j-Versionen gibt.

mvn dependency:tree | grep log
[INFO] +- com.prayagupd:log-service:jar:1.0:compile
[INFO] +- org.Apache.logging.log4j:log4j-api:jar:2.6.2:compile
[INFO] +- org.Apache.logging.log4j:log4j-core:jar:2.6.2:compile
[INFO] |  \- commons-logging:commons-logging:jar:1.1.1:compile

2) Stellen Sie sicher, dass ich log4j2.json richtig einstelle, was mit -Dlog4j.configurationFile = ???

val logConfig: PropertiesConfiguration = new PropertiesConfiguration("application.properties")
System.setProperty("log4j.configurationFile", logConfig.getString("log4j.config.file"))
println("log4j.configurationFile :: " + System.getProperty("log4j.configurationFile"))

oder 

Configurator.initialize(null, logConfig.getString("log4j.config.file"));

3) Am lustigsten ist der Parser für log4j2.json. Vielen Dank an das log4j-Team, dass Sie keinen Parser innerhalb der API zur Verfügung stellen.

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.4.0</version>
</dependency>

Dies kann eine Ausnahme auslösen, wenn der Json-Parser nicht gefunden wird

[Fatal Error] log4j2.json:1:1: Content is not allowed in prolog.
0
prayagupd

Ich habe dieses Problem durch Konfigurieren des Erstellungspfads gelöst. Hier sind die Schritte, die ich befolgt habe: In Eclipse.

  1. erstellen Sie einen Ordner und speichern Sie die logj4-Datei darin.
  2. Schreiben Sie in den erstellten Ordner und klicken Sie auf Build-Pfad.
  3. Klicken Sie auf Ordner hinzufügen
  4. Wählen Sie den erstellten Ordner.
  5. Klicken Sie auf OK und auf Übernehmen und schließen Sie.

Jetzt sollten Sie laufen können 

0
Alex Santos

Dies kann manchmal vor der eigentlichen log4j2-Konfigurationsdatei auf dem Webservlet ausgelöst werden. Zumindest für meinen Fall denke ich schon. Denn ich habe bereits in meiner web.xml

  <context-param>
    <param-name>log4jConfiguration</param-name>
    <param-value>classpath:log4j2-app.xml</param-value>
  </context-param>

und Überprüfung der log4j-web-Quelle; im Unterricht

org.Apache.logging.log4j.web.Log4jWebInitializerImpl

da ist die Linie;

String location = this.substitutor
                 .replace(this.servletContext.getInitParameter("log4jConfiguration"));

all das lässt mich denken, dass dies ein temporäres Protokoll ist, bevor die Konfiguration gefunden wird.

0
Olgun Kaya

Stellen Sie sicher, dass Sie ein log4j2.* Datei anstelle eines log4j.* Datei unter .../src/main/resources Mappe.

0
Zvonko