2013-11-14 12 views
5

Ich möchte eine einzige Konfiguration haben, die in mehreren Umgebungen ausgeführt wird, indem eine Systemeigenschaft geändert wird. Es folgt ein Beispiel:Wie kann ich einen Standardwert für eine log4j-Eigenschaft angeben?

log4j.appender.file.File=/opt/apps/${myEnvironment}/log/MyService.log 

Allerdings möchte ich sicherstellen, dass es immer noch ordnungsgemäß funktioniert, wenn jemand vergisst, die Systemeigenschaft festzulegen. Gibt es eine Möglichkeit, einen Standardwert in der Eigenschaftendatei anzugeben?

Antwort

2

Das könnte möglich sein. Gemäß den API-Dokumenten für org.apache.log4j.PropertyConfigurator sollte Ihre Variable zuerst in den Systemeigenschaften nach ihrem Wert suchen. Wenn sie dort nicht gefunden wird, sollte sie stattdessen die Konfigurationsdatei durchsuchen.

Alle Optionswerte erlauben Variablensubstitution. Die Syntax der Variablen ist ähnlich der von Unix-Shells. Die Zeichenfolge zwischen einer Eröffnung "$ {" und Schließen "}" wird als Schlüssel interpretiert. Der Wert der substituierten Variablen kann als Systemeigenschaft oder in der Konfigurationsdatei selbst definiert werden. Der Wert des Schlüssels wird zuerst in die Systemeigenschaften gesucht, und wenn nicht dort gefunden, wird dann in die zu analysierende Konfigurationsdatei gesucht. Der entsprechende Wert ersetzt die $ {variableName} Sequenz. Beispiel: Wenn die Eigenschaft java.home system auf/home/xyz gesetzt ist, wird jedes Vorkommen der Sequenz $ {java.home} als/home/xyz interpretiert.

https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PropertyConfigurator.html

Sie werden, wenn die Variable Satz in der Konfigurationsdatei, obwohl die Systemeigenschaften würde außer Kraft setzen, um zu überprüfen haben.

Verwandte Themen