Ich habe ein Webdienstprojekt mit netbeans 6.7.1 mit glassfish v2.1 geschrieben, log4j.properties in das Stammverzeichnis des Projekts gestellt und Folgendes verwendet:
static Logger logger = Logger.getLogger(MyClass.class);
im Konstruktor:
PropertyConfigurator.configure("log4j.properties");
und in Funktionen:
logger.info("...");
logger.error("...");
// ...
aber es ist eine Fehlerinformation (eigentlich habe ich versucht, fast jedes Verzeichnis zu schreiben, das ich realisieren konnte):
log4j:ERROR Could not read configuration file [log4j.properties].
java.io.FileNotFoundException: log4j.properties (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at java.io.FileInputStream.<init>(FileInputStream.java:66)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:297)
at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:315)
at com.corp.ors.demo.OrsDemo.main(OrisDemo.java:228)
log4j:ERROR Ignoring configuration file [log4j.properties].
log4j:WARN No appenders could be found for logger (com.corp.ors.demo.OrsDemo).
log4j:WARN Please initialize the log4j system properly.
Das Beispielprojekt kann von http://www.91files.com/?N3F0QGQPWMDGPBRN0QA8 abgerufen werden
Antworten:
Ich weiß, dass es etwas spät ist, diese Frage zu beantworten, und vielleicht haben Sie die Lösung bereits gefunden, aber ich poste die Lösung, die ich gefunden habe (nachdem ich viel gegoogelt habe), sodass es ein wenig helfen kann:
-Dlog4j.debug
@ das Ende Ihrer Java-Optionen von Tomcat hinzuHoffe das wird helfen.
rgds
quelle
Wie bereits erwähnt, sollte sich log4j.properties in einem Verzeichnis befinden, das im Klassenpfad enthalten ist. Ich möchte hinzufügen, dass in einem mavenisierten Projekt ein guter Ort sein kann
src/main/resources/log4j.properties
quelle
Sie können den Speicherort der Konfigurationsdatei mit dem VM-Argument -Dlog4j.configuration = "file: / C: /workspace3/local/log4j.properties" angeben.
quelle
log4j.configurationFile
Sie müssen es in das Stammverzeichnis legen, das Ihrem Ausführungskontext entspricht.
Beispiel:
Wenn Sie mit der Ausführung von einem anderen Projekt aus beginnen, muss diese Datei in dem Projekt enthalten sein, das zum Starten der Ausführung verwendet wird. Wenn ein anderes Projekt beispielsweise einige JUnit-Tests enthält, muss auch die Datei log4j.properties vorhanden sein.
Ich schlage vor, log4j.xml anstelle der log4j.properties zu verwenden. Sie haben mehr Optionen, erhalten Unterstützung von Ihrer IDE und so weiter ...
quelle
Behalten Sie für ein Maven-basiertes Projekt Ihre log4j.properties in src / main / resources. Nichts weiter zu tun!
quelle
Wenn Sie log4j.properties in src einfügen, müssen Sie die Anweisung nicht verwenden -
Es wird automatisch übernommen, da sich die Eigenschaftendatei im Klassenpfad befindet.
quelle
Versuchen:
quelle
Die Datei sollte sich im Verzeichnis WEB-INF / classes befinden. Diese Verzeichnisstruktur sollte in die War-Datei gepackt werden.
quelle
Meine IDE ist NetBeans. Ich habe die Datei log4j.property wie auf den Bildern gezeigt abgelegt
Wurzel
Netz
WEB-INF
Um diese Eigenschaftendatei zu verwenden, müssen Sie diesen Code schreiben:
Sie können den statischen ServletContext-Kontext aus einer anderen JSP-Datei definieren. Beispiel:
Jetzt können Sie die Datei log4j.property in Ihren Projekten verwenden.
quelle
Einige technisch korrekte spezifische Antworten wurden bereits bereitgestellt, können sich jedoch im Allgemeinen an einer beliebigen Stelle im Laufzeitklassenpfad befinden, dh überall dort, wo Klassen von der JVM gesucht werden.
Dies kann das Verzeichnis / src in Eclipse oder das Verzeichnis WEB-INF / classes in Ihrer bereitgestellten App sein. Beachten Sie jedoch am besten das Klassenpfadkonzept und warum die Datei darin abgelegt ist. Behandeln Sie nicht nur WEB-INF / Klassen als "magisches" Verzeichnis.
quelle
Ich habe viel Zeit darauf verwendet, herauszufinden, warum die Datei log4j.properties nicht angezeigt wird.
Dann bemerkte ich, dass es für das Projekt nur sichtbar war, wenn es sich in den Ordnern MyProject / target / classes / und MyProject / src / main / resources befand .
Hoffe, es wird jemandem nützlich sein.
PS: Das Projekt basierte auf Maven.
quelle
Ich habe festgestellt, dass Glassfish standardmäßig [Glassfish-Installationsort] \ glassfish \ Domains [Ihre Domain] \ als Standardarbeitsverzeichnis betrachtet. Sie können die Datei log4j.properties an diesem Speicherort ablegen und mit PropertyConfigurator in Ihrem Code initialisieren wie vorab erwähnt...
quelle
Ich weiß nicht, dass dies der richtige Weg ist. Aber es hat mein Problem gelöst. Legen Sie die Datei log4j.properties in "Projektordner" / config ab und verwenden Sie PropertyConfigurator.configure ("config // log4j.properties").
Es funktioniert mit IDE, aber nicht, wenn Sie die JAR-Datei selbst ausführen. Wenn Sie die JAR-Datei selbst ausführen, kopieren Sie einfach die Datei log4j.properties in den Ordner, in dem sich die JAR-Datei befindet. Wenn sich die JAR- und die Eigenschaftendatei in demselben Verzeichnis befinden, in dem sie ordnungsgemäß ausgeführt wird.
quelle
Fügen Sie log4j.properties in den Klassenpfad ein. Hier sind die 2 Fälle, die Ihnen helfen, den richtigen Speicherort zu ermitteln: 1. Für Webanwendungen lautet der Klassenpfad / WEB-INF / classes.
Zum Testen vom Haupt- / Komponententest ist der Klassenpfad das Quellverzeichnis
quelle
Es gibt viele Möglichkeiten, dies zu tun:
Weg 1: Wenn Sie es in einem Maven-Projekt versuchen, ohne PropertyConfigurator zu verwenden
Erstens: Suchen Sie unter scr / main nach dem Ressourcenverzeichnis
folgt dem Screenshot:
Weg 2: Wenn Sie es mit der Eigenschaftendatei für ein Java / Maven-Projekt versuchen, verwenden Sie den PropertyConfigurator
Platzieren Sie die Eigenschaftendatei an einer beliebigen Stelle im Projekt und geben Sie den richtigen Pfad an. Sagen Sie: src / javaLog4jProperties / log4j.properties
statisch{
}}
Weg 3: Wenn Sie es mit XML in einem Java / Maven-Projekt versuchen, verwenden Sie DOMConfigurator
Platzieren Sie die Eigenschaftendatei an einer beliebigen Stelle im Projekt und geben Sie den richtigen Pfad an. Sagen Sie: src / javaLog4jProperties / log4j.xml
statisch{
}}
quelle
Ihr Standard-Projekt-Setup hat eine Projektstruktur wie:
Sie platzieren log4j.properties im Ressourcenordner. Sie können den Ressourcenordner erstellen, falls keiner vorhanden ist
quelle
Eigentlich habe ich dieses Problem gerade in einer Standard-Java-Projektstruktur wie folgt erlebt:
In Eclipse muss ich den Ordner res hinzufügen, um den Pfad zu erstellen. In Intellij muss ich den Ordner res als Ressourcen markieren, wie der verknüpfte Screenshot zeigt: Klicken Sie mit der rechten Maustaste auf den Ordner res und markieren Sie ihn als Ressourcen .
quelle
Sie müssen
PropertyConfigurator.configure("log4j.properties");
in Ihrer Log4J-Klasse nicht angeben , ob Sie die log4j.properties bereits in Ihrer Projektstruktur definiert haben.Im Fall von Web Dynamic Project: -
Sie müssen Ihre log4j.properties unter WebContent -> WEB-INF -> log4j.properties speichern
Ich hoffe das kann dir helfen.
quelle