从 log4j2.xml 访问环境变量

Sub*_*dip 8 websphere web-applications was log4j2 spring-boot

我正在开发一个 Spring Boot Web 应用程序。我正在尝试从 log4j2.xml 配置中的 Websphere 服务器访问环境变量。但不知怎的,它不起作用。

环境变量在WAS中设置在以下路径下 -

应用程序服务器 > server001 > 进程定义 > Java 虚拟机 > 自定义属性

环境变量图像

我的 log4j2.xml 配置如下 -

<Appenders>
 
        <RollingFile name="RollingFile"
            fileName="$${env:environment}/apps/was/logs/app-logs.log"
            filePattern="$${env:environment}/apps/was/logs/$${date:yyyy-MM}/app-logs-%d{-dd-MMMM-yyyy}-%i.log.gz">
            <PatternLayout>
                <pattern>%d %p %C{1.} [%t] %m%n</pattern>
            </PatternLayout>
            <Policies>
                <OnStartupTriggeringPolicy />
                <SizeBasedTriggeringPolicy
                    size="10 MB" />
                <TimeBasedTriggeringPolicy />
            </Policies>
        </RollingFile>
</Appenders>
Run Code Online (Sandbox Code Playgroud)

我尝试使用 $${env:environment} / ${env:environment}/ ${environment} 获取环境变量。什么都不起作用。它无法获取环境变量。因此,它会创建一个名为“${env:environment}”/${environment} 的文件夹,而不是“DVL”。

从java我可以毫无问题地访问我的环境变量 -

System.getProperty("环境") ==> DVL

请帮忙。

Sub*_*dip 8

${sys:environment}我已经通过使用而不是解决了这个问题${env:environment}。有关更多详细信息,请浏览文档logging.apache.org/log4j/2.x/manual/lookups.html


Yog*_*ati 3

我们遇到了同样的问题,并实施了解决方法。

我们使用 java 读取环境值并将其存储到 MDC 中(使用slf4j MDC

并且 MDC 密钥可在log4j2.xml

例子:

MDC.put("environment", System.getProperty("environment"));
Run Code Online (Sandbox Code Playgroud)

现在,您只需编写即可访问环境{environment}

希望对你有帮助。


归档时间:

查看次数:

14954 次

最近记录:

5 年,7 月 前