Nach dem Hinzufügen von log4j zu meiner Anwendung erhalte ich bei jeder Ausführung meiner Anwendung die folgende Ausgabe:
log4j: WARNUNG Für den Logger wurden keine Appender gefunden (Slideselector.facedata.FaceDataParser). log4j: WARNUNG Bitte initialisieren Sie das log4j-System ordnungsgemäß.
Es scheint, dass dies bedeutet, dass eine Konfigurationsdatei fehlt. Wo sollte sich diese Konfigurationsdatei befinden und was ist ein guter Startinhalt?
Ich verwende einfaches Java für die Entwicklung einer Desktop-Anwendung. Also kein Webserver etc ...
configuration
log4j
Janusz
quelle
quelle
Antworten:
Log4j
sucht standardmäßig nach einer Datei mit dem Namenlog4j.properties
oderlog4j.xml
im Klassenpfad.Sie können steuern, welche Datei zum Initialisieren verwendet wird, indem Sie die Systemeigenschaften wie hier beschrieben festlegen (siehe Abschnitt "Standardinitialisierungsverfahren").
Beispielsweise:
Verursacht
log4j
, dass im Klassenpfad nach einer Datei mit dem Namen customName gesucht wird.Wenn Sie Probleme haben, finde ich es hilfreich, den log4j.debug zu aktivieren:
Es werden auf System.out viele hilfreiche Informationen darüber gedruckt, welche Datei zum Initialisieren verwendet wurde, welche Logger / Appender konfiguriert wurden und wie usw.
Die Konfigurationsdatei kann eine Java-Eigenschaftendatei oder eine XML-Datei sein. Hier ist ein Beispiel für das Eigenschaftendateiformat, das der Dokumentationsseite des log4j-Intro entnommen wurde :
quelle
java -Dlog4j.configuration=customName
? Ich habe Project / Preferences / Run / Debug Settings ausprobiert, einige Konfigurationen ausgewählt, auf Bearbeiten, Registerkarte Argumente, VM-Argumente geklickt. Enthält der benutzerdefinierte Name eine XML-Erweiterung?-Dlog4j.debug
die beim Debuggen Ihrer Konfiguration helfen können.Während die ordnungsgemäße Einrichtung von log4j ideal für "echte" Projekte ist, möchten Sie möglicherweise eine schnelle und schmutzige Lösung, z. B. wenn Sie nur eine neue Bibliothek testen.
Wenn ja, ein Aufruf der statischen Methode
wird die grundlegende Protokollierung in der Konsole einrichten und die Fehlermeldungen werden gelöscht.
quelle
Logger.getRootLogger().setLevel(Level.INFO);
Wenn Sie einfach alles loswerden (zB wenn Sie in Tests sind)
quelle
Wie pro Apache Log4j FAQ - Seite :
Grundsätzlich bedeutet die Warnung , dass für den Logger keine Appender gefunden wurden , dass Sie verwenden
log4j
keine Appender Protokollierungssystem verwenden, aber Sie haben Ihrer Konfigurationsdatei oder der Konfigurationsdatei keine Appender (wie FileAppender, ConsoleAppender, SocketAppender, SyslogAppender usw.) hinzugefügt fehlt.Es gibt drei Möglichkeiten, log4j zu konfigurieren: mit einer Eigenschaftendatei (
log4j.properties
), mit einer XML-Datei und über Java-Code (rootLogger.addAppender(new NullAppender());
).log4j.properties
Wenn eine Eigenschaftendatei vorhanden ist (z. B. bei der Installation von Solr), müssen Sie diese Datei in Ihrem Klassenpfad platzieren .
Klassenpfad
Hier sind einige Befehlsvorschläge unter Linux, wie Sie Ihren Klassenpfadwert bestimmen können:
oder aus Java:
System.getProperty("java.class.path")
.Log4j XML
Unten finden Sie eine grundlegende XML-Konfigurationsdatei für log4j im XML-Format:
Kater
Wenn Sie Tomcat verwenden, können Sie Ihren Ordner
log4j.properties
in:/usr/share/tomcat?/lib/
oder/var/lib/tomcat?/webapps/*/WEB-INF/lib/
ablegen.Solr
Als Referenz
log4j.properties
sieht die Solr-Standarddatei folgendermaßen aus:Warum kann log4j meine Eigenschaftendatei in einer J2EE- oder WAR-Anwendung nicht finden?
Siehe auch:
quelle
Sie können den Speicherort Ihrer log4j.properties in Ihrer Java-App festlegen, indem Sie Folgendes verwenden:
Weitere Informationen finden Sie hier: https://logging.apache.org/log4j/1.2/manual.html
quelle
import
Anweisung ist immer hilfreich, da die Code-Vervollständigung nicht so zuverlässig ist.Suchen Sie online nach log4j.properties oder log4j.xml mit einem Stamm-Appender und fügen Sie ihn in Ihren Klassenpfad ein.
wird sich an der Konsole anmelden. Ich ziehe es vor, mich in einer Datei anzumelden, damit Sie danach nachforschen können.
Für ausführliche Protokollierungsanwendungen müssen 100 KB normalerweise auf 1 MB oder 10 MB erhöht werden, insbesondere für das Debuggen.
Persönlich habe ich mehrere Logger eingerichtet und den Root-Logger auf Warn- oder Fehlerstufe anstatt auf Debug eingestellt.
quelle
Eine andere Möglichkeit, dies zu tun, ohne die Eigenschaftendatei in den Klassenpfad zu stellen, besteht darin, die Eigenschaft direkt aus dem Java-Code festzulegen. Hier ist der Beispielcode.
}}
quelle
Sie können die Protokollebene mit setLevel () einrichten .
Die Ebenen sind nützlich, um auf einfache Weise die Art der Informationen festzulegen, die das Programm anzeigen soll.
Beispielsweise:
Die möglichen Ebenen sind:
Gemäß Logging Services-Handbuch
quelle
quelle
System.out
. Das Javadoc für die No-Args-Konfigurationsmethode sagt:Add a ConsoleAppender that uses PatternLayout using the PatternLayout#TTCC_CONVERSION_PATTERN and prints to System.out to the root category.
Zum Aktivieren
-Dlog4j.debug
gehe ich zu System, Erweiterte Systemeinstellungen, Umgebungsvariablen und setze Systemvariable_JAVA_OPTIONS
auf-Dlog4j.debug
.quelle
In was entwickelst du dich? Verwenden Sie Apache Tomcat?
Ich habe solche Eigenschaften in einer meiner Java-Apps.
quelle
Mein log4j wurde durch die folgende Eigenschaftendatei behoben:
quelle
Ich habe Datei erstellt log4j.properties in Ressourcen - Ordner neben hibernate.cfg.xml Datei und füllte es mit Text:
Jetzt habe ich Warnungen und Fehler beseitigt
quelle
Erstellen Sie einfach log4j.properties im Ordner src / main / assembly. Je nachdem, ob Protokollnachrichten in der Konsole oder in der Datei angezeigt werden sollen, ändern Sie Ihre Datei. Im Folgenden werden Ihre Nachrichten in der Konsole angezeigt.
quelle
Wie bereits erläutert, gibt es zwei Ansätze
Zuerst müssen Sie diese Zeile einfach zu Ihrer Hauptmethode hinzufügen:
Der zweite Ansatz besteht darin, diese Standarddatei log4j.properties zu Ihrem Klassenpfad hinzuzufügen:
Während Sie den zweiten Ansatz wählen, müssen Sie sicherstellen, dass Sie die Datei ordnungsgemäß initialisieren.
Z.B.
Stellen Sie sicher, dass Sie den erforderlichen Ordner zum Speichern von Protokolldateien erstellen.
quelle
Versuchen Sie, das Debug-Attribut in log4j: configuration node auf true zu setzen.
Es druckt Informationen aus, während die Konfigurationsdatei gelesen und zum Konfigurieren der log4j-Umgebung verwendet wird. Möglicherweise erhalten Sie weitere Details, um Ihr Problem zu beheben.
quelle
Protokollierungs-API - Die Java-Protokollierungs-API erleichtert die Wartung und Instandhaltung von Software beim Kunden, indem Protokollberichte erstellt werden, die für die Analyse durch Endbenutzer, Systemadministratoren, Außendiensttechniker und Softwareentwicklungsteams geeignet sind. Die Protokollierungs-APIs erfassen Informationen wie Sicherheitsfehler, Konfigurationsfehler, Leistungsengpässe und / oder Fehler in der Anwendung oder Plattform. Das Kernpaket enthält Unterstützung für die Bereitstellung von Protokolldatensätzen im Nur-Text- oder XML-Format für Speicher, Ausgabestreams, Konsolen, Dateien und Sockets. Darüber hinaus können die Protokollierungs-APIs mit Protokollierungsdiensten interagieren, die bereits auf dem Host-Betriebssystem vorhanden sind.
Paket java.util.logging «Bietet die Klassen und Schnittstellen der wichtigsten Protokollierungsfunktionen der Java-Plattform.
Log4j 1.x «log4j ist ein beliebtes Java-basiertes Protokollierungsprogramm. Log4j ist ein Open Source-Projekt, das auf der Arbeit vieler Autoren basiert. Mithilfe von Appenders [Konsole, Dateien, Datenbank und E-Mail] kann der Entwickler steuern, welche Protokollanweisungen an verschiedenen Speicherorten ausgegeben werden. Es kann zur Laufzeit mithilfe externer Konfigurationsdateien vollständig konfiguriert werden.
Konfigurationsdateien können im XML- oder im Java-Eigenschaftenformat (Schlüssel = Wert) geschrieben werden.
MySQL-Tabellenstruktur für Tabelle
logdata
quelle
Das Update für mich war, "log4j.properties" in den Ordner "src" zu legen.
quelle
Wenn wir Apache Commons Logging Wrapper über log4j verwenden, müssen beide Jars im Klassenpfad verfügbar sein. Auch
commons-logging.properties
undlog4j.properties/xml
sollte im Klassenpfad verfügbar sein.Wir können auch die Implementierungsklasse und den
log4j.properties
Namen alsJAVA_OPTS
entweder mit übergeben-Dorg.apache.commons.logging.Log=<logging implementation class name> -Dlog4j.configuration=<file:location of log4j.properties/xml file>
. Gleiches kann über die EinstellungJAVA_OPTS
bei App / Webserver erfolgen.Es hilft, Eigenschaften zu externalisieren, die während der Bereitstellung geändert werden können.
quelle
Dies ist eine alternative Methode mit .yaml
Logikstruktur:
Stichprobe:
Ref: LOG4J 2 KONFIGURATION: VERWENDUNG VON YAML
quelle
Zum Testen eine schnelle Methode, einschließlich der Einstellung der Protokollstufe:
quelle
Maven-Lösung:
Ich bin auf dieselben Probleme wie oben gestoßen und habe für eine Maven-Lösung zwei Abhängigkeiten verwendet. Diese Konfiguration ist nur zum schnellen Testen gedacht, wenn für ein einfaches Projekt ein Logger mit einer Standardkonfiguration verwendet werden soll. Ich kann mir vorstellen, dass Sie später eine Konfigurationsdatei erstellen möchten, wenn Sie weitere Informationen benötigen und / oder Ihre eigenen Protokollierungsstufen optimieren möchten.
quelle
Ich habe das gerade gemacht und das Problem wurde behoben.
Folgen Sie dem folgenden Blog
https://intellij-support.jetbrains.com/hc/en-us/community/posts/206875685-How-to-fix-log4j-WARN-console-messages-when-running-an-Application-inside-IntelliJ- Idee
Aber hier sagt er wie unten
Um dies zu beheben, geben Sie einfach die folgende Datei log4j.resources in den Ordner main / resources Ihres Projekts ein
Anstatt log4j.resources zu erstellen, erstellen Sie log4j.properties. Klicken Sie mit der rechten Maustaste auf Ressource in IntelliJ -> Neu -> Ressourcenpaket - Benennen Sie es einfach als log4j
quelle
Wenn dieser Fehler in Intellij IDEA auch nach dem Hinzufügen der Datei
log4j.properties
oderlog4j.xml
in Ihrem Ressourcentestordner auftritt, ist der Intellij IDEA möglicherweise noch nichts über die Existenz der Datei bekannt.Klicken Sie nach dem Hinzufügen der Datei mit der rechten Maustaste auf die Datei und wählen Sie log4j.xml neu kompilieren .
quelle