Log4J2 egenskabssubstitution - standard
Standard ejendomskort
Hvis du ser på http://logging.apache.org/log4j/2.x/manual/configuration.html#PropertySubstitution, kan du angive et standardegenskabskort i konfigurationsfilen. Det har denne form:
<Configuration status="debug">
<Properties>
<Property name="oauthLoginLogPath">default/location/of/oauth2.log</Property>
</Properties>
...
<Appenders>
<Appender type="File" name="File" fileName="${sys:oauthLoginLogPath}">
....
</Configuration
Hvis du derefter starter din app med systemegenskaben -DoauthLoginLogPath=/path/oauth2.log
, filtillægget fileName
værdi vil først blive slået op i systemegenskaber, men hvis det mislykkes, vil den falde tilbage til egenskaben defineret i Properties
afsnittet øverst i log4j2.xml-konfigurationsfilen.
Inline
En anden måde er at angive standardværdien inline:
<Appender type="File" name="File" fileName="${sys:oauthLoginLogPath:-default/location/of/oauth2.log}">
Generelt følger alle Log4j2-opslag dette mønster:${type:key:-defaultValue}
.
Env vs sys
Forresten, env
præfikset er for miljøvariabler (som %PATH% på Windows), og er ikke relateret til sys
, som er Java-systemegenskaber. Se også http://logging.apache.org/log4j/2.x/manual/lookups.html
Du kan bruge den samme ${sys:propName:-default}
syntaks. Bemærk ':-', det hedder "variabel standardværdiafgrænser ". standard værdi for "variabel standardværdiafgrænser " er :-
, som i bash og andre *nix skaller.
Du kan læse mere om dette i Log4j 2-dokumentationen til StrSubstitutor klasse.
For at bruge det samme eksempel:
<Configuration status="debug">
...
<Appenders>
<Appender type="File" name="File"
fileName="${sys:oauthLoginLogPath:-default/location/of/oauth2.log}">
....
</Appenders>
</Configuration>