2010-05-05 14 views
30

Wie können wir angeben, wo log4j aussehen muss, wenn sie versuchen, ihre XML-Konfigurationsdatei zu finden?Wo log4j.xml platziert werden kann

Es scheint, dass log4j standardmäßig in das Stammverzeichnis eines Klassenordners schaut, ich kann sagen, dass ich die log4j-Debug-Funktionalität nutze und meine Anwendung von der IDE aus laufe.

Allerdings habe ich keine Klasse Ordner in meinem Glas mehr. Und die Datei log4j.xml befindet sich im Stammverzeichnis von jar.

Ich habe bereits versucht, die Option -Dlog4j.configuration = log4j.xml zu setzen, aber es funktioniert nicht.

Hier ist die globale Struktur meiner Bewerbung im Moment:

  • com
  • lib
  • meta-inf
  • log4j.xml
+1

Wenn Sie log4j 2.0 oder höher verwenden, sollte der Dateiname 'log4j2.xml' lauten. – Francois

Antwort

29

Es findet die log4j. XML mit dem CLASSPATH. Wenn log4j keine Konfigurationsdatei findet, wird ein Fehler an die Konsole gesendet. Wenn Sie keinen solchen Fehler sehen, ist es wahrscheinlich, dass Sie eine Konfigurationsdatei finden, die möglicherweise nicht die ist, die Sie bearbeiten. Es gibt eine Befehlszeilenoption, die Log4J dazu zwingt, den Pfad der verwendeten Konfigurationsdatei zu melden.

Von http://wiki.apache.org/logging-log4j/Log4jConfigurationHelp

Wenn Sie laufen mit „-Dlog4j.debug“ dann log4j wird erzählt Informationen zu Standard Ausgabe drucken, wie es zu configure selbst versucht. Wenn Sie durchsehen, wird Ihnen mitteilen, wo die Konfigurationsdatei gesucht wird.

+0

Log4j.xml befindet sich im Stammverzeichnis meines Ordners. Und dieser Ordner ist in meinem Klassenpfad enthalten. Es scheint jedoch nicht von log4j abgeholt zu werden ...:/ – Farid

+0

Ich bin mir dieser Debugging-Funktion bewusst, aber es scheint nicht zu funktionieren. Das Protokoll wird nur auf der Konsole ausgedruckt, und ich sehe kein Debug-Protokoll. Ich habe keinen Fehler ... Ich bin total verloren. – Farid

+0

Wenn der Debug-Parm Log4J nicht den Pfad und den Dateinamen der zu ladenden Konfigurationsdatei meldet, würde ich mich fragen, wie die Anwendung gestartet wurde. Ist das durch eine Batch-Datei? Welche IDE verwendest du? –

5

Ich habe keine Fehler

So log4j Konfiguration findet, sonst würden Sie erhalten:

log4j: WARN konnte keine Appender für Logger gefunden werden ().
log4j: WARN Bitte initialisieren Sie das log4j-System ordnungsgemäß.

auch:

Das Protokoll sind nur auf dem So

Konsole ausgedruckt das bedeutet, dass Sie wahrscheinlich eine Datei appender, wie FileAppender oder RollingFileAppender definieren müssen. Der Abschnitt "Konfiguration" unter the short intro enthält einige Beispiele.

-2

Mach dir keine Sorgen, wo Sie es hinstellen. Führen Sie einfach Ihr Projekt aus, sagen Sie in Eclipse, log4j wird eine Ausnahme auslösen, die Ihnen sagt, wo es gesucht hat. Dann kannst du es dort hinstellen.

Sobald Sie es funktioniert, werden Sie auch herausfinden, wie Sie das ändern, wie Sie die Logik verstehen.

+1

In Eclipse wird eine Ausnahme ausgelöst, aber es sagt Ihnen nicht, wo es nach der Datei sucht. – Knoxie

+0

Console-Output sagt: "ERROR StatusLogger Keine log4j2-Konfigurationsdatei gefunden. Standardkonfiguration verwenden: Nur Fehler an der Konsole protokollieren. Setzen Sie die Systemeigenschaft 'log4j2.debug', um die Log4j2-interne Initialisierungsprotokollierung anzuzeigen." Also nicht hilfreich, sorry. – VinZ

3

können Sie verwenden:

DOMConfigurator.configure(log4jConfigurationFilename); 

und den Speicherort angeben, wenn sie als die Wurzel andere ist!

18

Angenommen, Ihre log4j-Konfiguration befindet sich außerhalb des Quellbaums. Wenn es nicht der Konfigurationsdatei finden können, helfen sie mit:

-Dlog4j.configuration=file:///your/path/log4j.xml 

Hinweis die Qualifikation file: ///. Es wird nicht ohne funktionieren.

+0

hi rwst: Ich möchte laback.xml von Tomcat vm Argument laden, aber das funktioniert nicht, können Sie irgendeine Idee vorschlagen? –

+0

Diese Antwort zusammen mit -Dlog4j.debug Option ist perfekt für herauszufinden, was passiert. –

Verwandte Themen