Java >> Java tutorial >  >> Tag >> Log4j

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>

Java tag