Ich frage mich nur, ob es eine Möglichkeit gibt, einen Standardwert für die Eigenschaftsersetzung in LOG4J bereitzustellen?
Ich möchte den Dateipfad in der Java-Systemeigenschaft übergeben und ihn dann mit “${env:mySystemProperty}” verwenden. Aber was ist, wenn der Entwickler vergisst, diese Eigenschaft festzulegen? Dann hätte ich gerne einen sinnvollen Standardwert in log4j2.xml definiert.
Irgendeine Idee, wie man diese Funktionalität erreicht?
Dann, wenn Sie Ihre App mit Systemeigenschaft starten -DoauthLoginLogPath=/path/oauth2.logder Datei-Appender fileName Der Wert wird zuerst in den Systemeigenschaften nachgeschlagen, aber wenn dies fehlschlägt, wird auf die in der definierte Eigenschaft zurückgegriffen Properties oben in der Konfigurationsdatei log4j2.xml.
In der Reihe
Eine zweite Möglichkeit besteht darin, den Standardwert inline bereitzustellen:
Ich weiß nicht, ob es in einer früheren Version funktioniert hat, aber das funktioniert nicht mehr. Sie müssen ‘:-‘ in der Eigenschaft verwenden, um den Standardwert zu definieren.
– GoGoris
14. Juni 2016 um 6:56 Uhr
Falls jemand Schwierigkeiten hat, den Standardwert inline zu setzen. Bitte beachten Sie, dass der Wert das ist, was nach dem Bindestrich kommt, zB wenn mein Standardpfad lautet /var/log/myfile.logdann würde ich schreiben ${sys:oauthLoginLogPath:-/var/log/myfile.log}
– José Duarte
19. Oktober 2021 um 23:06 Uhr
GoGoris
Sie können dasselbe verwenden ${sys:propName:-default}Syntax. Beachten Sie das ‘:-‘, es heißt “variabler Standardwertbegrenzer“. Die Ursprünglich Wert für “variabler Standardwertbegrenzer” ist :-wie in bash und andere *nix Muscheln.
Mehr dazu können Sie in der Dokumentation zu Log4j 2 nachlesen StrSubstitutor Klasse.
Leider scheinen die Standardwerte zum Zeitpunkt des Ladens der Datei log4j2.xml aufgelöst zu werden. Es funktioniert nicht, Standardwerte für zB Variablen festzulegen, die über den Thread-Kontext injiziert werden sollen.
– empf
16. Juli 2017 um 20:20 Uhr
Korrektur: funktioniert, aber man muss noch eine zweite hinzufügen $z.B $${ctx:username:-UNKNOWN} 🙂