在 log4j xml 配置中使用系统环境变量

是否可以在 log4j xml 配置文件中引用系统环境变量(而不是 Java 系统属性)?

我希望能够做这样的事情:

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

并让它从系统环境变量中获取,这样我就可以避免使用-D参数传入这么多东西。


答案 1

我最近试图这样做,但无法让它工作。我最终做的是在启动时发送一个变量。假设您有一个名为 $LOG_LEVEL 的环境变量:

<level value="${log_level}" />

在启动时...

java -Dlog_level=$LOG_LEVEL your_app

答案 2

此语法仅记录在 log4j 2.X 中,因此请确保使用正确的版本。它不适用于 1.X 版本。

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

推荐