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?

585voto

maba Punkte 45935

Este Kurze Einführung in log4j Der Leitfaden ist schon etwas älter, aber immer noch gültig.

In diesem Leitfaden finden Sie einige Informationen über die Verwendung von Loggern und Appendern.


Für den Anfang gibt es zwei einfache Ansätze, die Sie wählen können.

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 (aus dem oben genannten Leitfaden) in den Klassenpfad aufnehmen:

# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1

# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender

# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

84voto

JDJ Punkte 4278

Es sieht so aus, als müssten Sie den Ort Ihrer log4j.properties Datei zum Klassenpfad in Eclipse hinzufügen.

Vergewissern Sie sich, dass Ihr Projekt in Eclipse geöffnet ist, klicken Sie dann auf das Menü "Ausführen" oben in Eclipse und klicken Sie auf Folgendes:

  1. Laufen lassen
  2. Laufkonfigurationen
  3. Klassenpfad (Registerkarte)
  4. Benutzer-Einträge
  5. Erweitert (Schaltfläche auf der rechten Seite)
  6. Ordner hinzufügen
  7. Navigieren Sie dann zu dem Ordner, der Ihre Datei log4j.properties enthält
  8. Bewerbung
  9. ausführen.

Die Fehlermeldung sollte nicht mehr erscheinen.

63voto

lancerex Punkte 1202

Schnelle Lösung:

  1. Code hinzufügen zu Hauptfunktion :

    String log4jConfPath = "/path/to/log4j.properties";
    PropertyConfigurator.configure(log4jConfPath);
  2. erstellen Sie eine Datei namens log4j.properties unter /pfad/bis

    log4j.rootLogger=INFO, 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{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n

42voto

kenorb Punkte 134883

Dies ist nur eine Warnung.

Befestigung von

Dies geschieht, wenn die Standardkonfigurationsdateien log4j.properties y log4j.xml nicht gefunden werden kann und die Anwendung keine explizite Konfiguration vornimmt.

Um dies zu beheben, erstellen/kopieren Sie einfach log4j.properties o log4j.xml in Ihren Standort auf der Klassenpfad (in der Regel die gleichen wie die jar-Dateien).

Setzen Sie optional die Option java: -Dlog4j.configuration=file:///path/to/log4j.properties .

log4j verwendet Thread.getContextClassLoader().getResource() um die Standardkonfigurationsdateien zu finden und überprüft nicht direkt das Dateisystem. Das Wissen um den richtigen Speicherort für die log4j.properties o log4j.xml erfordert ein Verständnis der Suchstrategie des verwendeten Klassenladers. log4j bietet keine Standardkonfiguration, da die Ausgabe auf die Konsole oder in das Dateisystem in einigen Umgebungen verboten sein kann.

Fehlersuche

Zur Fehlersuche können Sie versuchen, mit -Dlog4j.debug=true Parameter.

Konfiguration von log4j.properties

Beispielhafte Konfiguration von log4j.properties :

# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1

# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender

# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

# Print only messages of level WARN or above in the package com.foo.
log4j.logger.com.foo=WARN

Hier ist eine weitere Konfigurationsdatei, die mehrere Appenders verwendet:

log4j.rootLogger=debug, stdout, R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log

log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1

log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n

Apache Solr

Bei Verwendung von Solr , Kopie <solr>/example/resources/log4j.properties an einer Stelle auf dem Klassenpfad .

Beispielhafte Konfiguration von log4j.properties von Solr lautet wie folgt:

#  Logging level
solr.log=logs/
log4j.rootLogger=INFO, file, CONSOLE

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender

log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%-4r [%t] %-5p %c %x \u2013 %m%n

#- size rotation with log cleanup.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.MaxFileSize=4MB
log4j.appender.file.MaxBackupIndex=9

#- File to log to and log format
log4j.appender.file.File=${solr.log}/solr.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%-5p - %d{yyyy-MM-dd HH:mm:ss.SSS}; %C; %m\n

log4j.logger.org.apache.zookeeper=WARN
log4j.logger.org.apache.hadoop=WARN

# set to INFO to enable infostream log messages
log4j.logger.org.apache.solr.update.LoggingInfoStream=OFF

Siehe auch:

24voto

Searene Punkte 22315

Die meisten Antworten deuten darauf hin, dass log4j.properties Datei am richtigen Ort platziert werden (bei Maven-Projekten sollte sie sich in src/main/resources )

Aber für mich besteht das Problem darin, dass meine log4j.properties nicht korrekt konfiguriert ist. Hier ist ein Beispiel, das bei mir funktioniert, Sie können es zuerst ausprobieren.

# 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

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