Ich möchte angeben können, wo meine Log4j2-Logs entweder mit VM-Argumenten oder Befehlszeilenargumenten gehen.Log4j2, wie man das Logging-Ausgabeverzeichnis mit Kommandozeilenargumenten steuert
Dies ist anders als alle Fragen, die sich fragen, wie der Dateipfad log4j-Eigenschaften angegeben wird.
Ich dachte, ich -Darbitrary.path="path/to/root/dir"
in den VM Argumente hinzufügen könnte und verweisen Sie dann in log4j2.properties
:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<File name="file" fileName="${arbitrary.path}/application.log">
<PatternLayout
pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n" />
</File>
</Appenders>
<Loggers>
<Root level="info" additivity="false">
<AppenderRef ref="file" />
</Root>
</Loggers>
</Configuration>
Ach, es scheint, dass dies nicht funktioniert. Gibt es etwas, das ich falsch mache, oder eine alternative Möglichkeit, diese Funktionalität zu bekommen?
[EDIT]
Basierend auf den Vorschlag von @RC. Habe ich versucht, auch an die Befehlszeilenargumente Hinzufügen --log-dir "/tmp/logMonitor/logs"
und verändert die Referenz auf ${main:--log-dir}
. Diese Variable wird jedoch aufgelöst als "-log-dir" und setzt die Log-Datei in <project_root>/-log-dir/application.log
[/ EDIT]
Haben Sie gelesen: https://logging.apache.org/log4j/2.0/manual/lookups.html? –
Basierend auf dem Teil dieses Links, auf den Sie sich beziehen, versuchte ich eine andere Strategie, aber ohne Erfolg. Ich habe Informationen zu der Frage hinzugefügt. – ds390s
Ich würde die "Umgebung" Variablen verwenden, es ist viel einfacher –