Search code examples
javaxmlconfigurationlog4jenvironment-variables

Using system environment variables in log4j xml configuration


Is it possible to reference system environment variables (as opposed to Java system properties) in a log4j xml configuration file?

I'd like to be able to do something like:

<level value="${env.LOG_LEVEL}" />

and have it get that from the system environment variables, so I can avoid having to pass in so many things with -D parameters.


Solution

  • This syntax is documented only in log4j 2.X so make sure you are using the correct version. It does not work on the 1.X versions.

        <Appenders>
        <File name="file" fileName="${env:LOG_PATH}">
            <PatternLayout>
                <Pattern>%d %p %c{1.} [%t] %m %ex%n</Pattern>
            </PatternLayout>
        </File>
    </Appenders>