問題描述
從 log4j2.xml 訪問環境變量 (Accessing environment variable from log4j2.xml)
我正在開發一個 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>
我嘗試使用 $${env:environment} / ${env:environment}/ ${environment} 獲取環境變量。什麼都沒有工作。它無法獲取環境變量。所以它創建了一個名為“${env:environment}”/${environment} 而不是“DVL”的文件夾。
從 java 我可以毫無問題地訪問我的環境變量 ‑
System.getProperty("environment") ==> DVL
請幫忙
參考解法
方法 1:
I have resolved this issue by using ${sys:environment}
instead of ${env:environment}
. For more details please go through the documentation logging.apache.org/log4j/2.x/manual/lookups.html
方法 2:
We had a same issue and we implemented a workaround.
We read the environment value using java and store into MDC (Using slf4j MDC)
And MDC key is accessible in log4j2.xml
Example:
MDC.put("environment", System.getProperty("environment"));
Now, you can access environemnt by simply writing {environment}
Hope this will help you.
(by Subhadip、Subhadip、Yogesh Prajapati)