2013-11-14 11 views
5

Desidero avere una singola configurazione che verrà eseguita in più ambienti modificando una proprietà di sistema. Segue un esempio:Come specificare un valore predefinito per una proprietà log4j

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

Tuttavia, voglio assicurarmi che funzioni ancora correttamente se qualcuno dimentica di impostare la proprietà di sistema. C'è un modo per specificare un valore predefinito nel file delle proprietà?

risposta

2

Ciò potrebbe essere possibile. In base ai documenti API per org.apache.log4j.PropertyConfigurator, la variabile deve innanzitutto cercare il suo valore nelle proprietà di sistema e, se non viene trovata lì, dovrebbe invece cercare nel file di configurazione.

Tutti i valori di opzione ammettono la sostituzione variabile. La sintassi della sostituzione della variabile è simile a quella delle shell Unix. La stringa tra un'apertura "$ {" e la chiusura "}" viene interpretata come una chiave. Il valore della variabile sostituita può essere definito come una proprietà di sistema o nel file di configurazione stesso. Il valore della chiave viene prima cercato in le proprietà di sistema, e se non viene trovato lì, viene ricercato in il file di configurazione in fase di analisi. Il valore corrispondente sostituisce la sequenza $ {variableName}. Ad esempio, se la proprietà del sistema java.home è impostata su/home/xyz, ogni occorrenza della sequenza $ {java.home} verrà interpretata come/home/xyz.

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

Si dovrà verificare se la variabile nel file di configurazione sarebbe ignorare le proprietà del sistema però.