Welche Variablen muss ich als Argumente für die JVM festlegen / übergeben, damit log4j ordnungsgemäß ausgeführt wird? Und mit richtig meine ich nicht beschweren und auf der Konsole drucken. Kann ich ein typisches Beispiel sehen?
Hinweis: Ich muss vermeiden, eine log4j.properties-Datei in der Anwendung zu erstellen.
Antworten:
Haben Sie eine log4j-Konfigurationsdatei? Verweisen Sie einfach mit
Dabei sollte {Pfad zur Datei} vorangestellt werden
file:
Bearbeiten: Wenn Sie mit log4j2 arbeiten, müssen Sie verwenden
Entnommen aus der Antwort https://stackoverflow.com/a/34001970/552525
quelle
{path to file}
muss vorangestellt werden,file:
damit dies funktioniert.Die Lösung verwendet das folgende JVM-Argument:
Wenn die Datei nicht in dem Classpath (in
WEB-INF/classes
bei Tomcat) , aber irgendwo auf Sie Festplatte, Verwendungfile:
, wieWeitere Informationen und Beispiele finden Sie hier: http://logging.apache.org/log4j/1.2/manual.html
quelle
-Dlogback.configurationFile=C:\logback-test.xml
-Dlog4j.debug
Dies scheint sich geändert zu haben (wahrscheinlich mit log4j2) zu:
Siehe: https://logging.apache.org/log4j/2.x/manual/configuration.html
quelle
JAVA_PARAMS="-Dlog4j.configurationFile=classpath:log4j2-container.xml"
wenn das Docker-Image das Überschreiben von JAVA_PARAMS mit env-Variablen unterstützt und sich die Datei im Jar befindet.Ich weiß, dass dies bereits beantwortet wurde, aber weil Sie gesagt haben, dass dies nicht genau das ist, wonach Sie suchen, möchte ich auf die folgende Alternative hinweisen:
Sie können auch eine Konfigurationsklasse anstelle der Eigenschaften oder der XML-Datei verwenden.
Weitere Informationen finden Sie unter http://logging.apache.org/log4j/1.2/manual.html .
quelle
Solange sich Ihre Datei log4j.properties im Klassenpfad befindet, sollte Log4j sie im Allgemeinen beim Start von JVM automatisch abrufen.
quelle
Log4J 1.x ist seit 2015 zu spät zur Party gekommen und hat EOL erreicht .
Ab Log4J 2.x sollte die JVM-Option sein
-Dlog4j.configurationFile=<filename>
PS
<filename>
könnte eine Datei relativ zum Klassenpfad sein, ohne diefile:
in den anderen Antworten vorgeschlagenen.quelle
Relativer Pfad ist auch in Ordnung:
oder
quelle
Wenn Sie Gradle verwenden. Sie können das Plugin 'aplication' anwenden und den folgenden Befehl verwenden
quelle