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?

10voto

nosequeweaponer Punkte 313

Zuallererst: Erstellen Sie eine log4j.properties-Datei

# Root logger option
log4j.rootLogger=INFO, stdout

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
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

Platzieren Sie es in src/main/resources/

Danach verwenden Sie diese 2 Abhängigkeiten:

<dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.5</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.5</version>
        </dependency>

Diese letzte Abhängigkeit muss der POM-Datei hinzugefügt werden:

<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.1.5.RELEASE</version>
        </dependency>

9voto

AkashK Punkte 109

Wie bereits erläutert, gibt es 2 Ansätze

Die erste Möglichkeit besteht darin, diese Zeile in Ihre Hauptmethode einzufügen:

BasicConfigurator.configure();

Der zweite Ansatz besteht darin, diesen Standard hinzuzufügen log4j.properties Datei in Ihren Klassenpfad:

Beim zweiten Ansatz müssen Sie darauf achten, dass Sie die Datei richtig initialisieren, Beispiel.

Properties props = new Properties();
props.load(new FileInputStream("log4j property file path"));
props.setProperty("log4j.appender.File.File", "Folder where you want to store log files/" + "File Name");

Stellen Sie sicher, dass Sie den erforderlichen Ordner zum Speichern der Protokolldateien erstellen.

7voto

Ich hatte das gleiche Problem, als ich versuchte, die JUnit-Testklasse auszuführen.

Das Problem ist behoben, nachdem ich die Datei log4j.properties im Ordner src/test/resources manuell hinzugefügt habe.

Durch Hinzufügen des folgenden Codes zur Datei log4j.properties wurde das Problem gelöst:

# Root logger option
log4j.rootLogger=INFO, file, stdout

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\logging.log
log4j.appender.file.MaxFileSize=10MB
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

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
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

7voto

Simulant Punkte 18026

Sie verwenden die Logger in Ihrem Code, um eine Meldung zu protokollieren. Die Appender ist ein Objekt, das an ein Logger um die Nachricht an ein bestimmtes Ziel zu schreiben. Es gibt FileAppender um in Textdateien zu schreiben oder die ConsoleAppender um in die Konsole zu schreiben. Sie müssen Ihren Code des Logger- und Appender-Setups zeigen, um weitere Hilfe zu erhalten.

lesen Sie bitte die Lehrgang für ein besseres Verständnis der Interaktion von Logger und Appender.

7voto

belvey Punkte 79

Stellen Sie sicher, dass die Eigenschaftsdatei richtig eingestellt ist. Und wieder, es scheint wie, dass der Compiler die Eigenschaften-Datei nicht finden kann, können Sie wie folgt in der pom (nur wenn Sie Maven-Projekt verwenden) festgelegt.

<build>
       <sourceDirectory> src/main/java</sourceDirectory>
       <testSourceDirectory> src/test/java</testSourceDirectory>
        <resources>
             <resource>
                  <directory>resources</directory>
             </resource>
        </resources>           
</build >

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