使用环境变量在项目外加载 log4j2.xml 文件

Load log4j2.xml file outside project with enviroment variable

我正在为 TomCat 7.0 服务器开发 java 网络应用程序 (v3.0),我在加载 log4j2.xml 文件时遇到问题。

我已经在我的项目外定义了 log4j2.xml 文件,并在我的 web.xml 文件中定义了该文件的路径。

如果我对路径进行硬编码,我的 log4j2.xml 文件会正常加载。

<context-param>
    <param-name>log4jConfiguration</param-name>
    <param-value>file:///C:/my/path/log4j2.xml</param-value>
</context-param>    

另一方面,我想使用环境变量来定义路径。

<context-param>
    <param-name>log4jConfiguration</param-name>
    <param-value>file:///${ENVIROMENT_VARIABLE}/log4j2.xml</param-value>
</context-param>

当我开始 TomCat 我有这个错误:

ERROR SatusLogger Unable to access file:///$%7BENVIROMENT_VARIABLE%7D/log4j2.xml

看起来它不是 'translating' 变量。

非常感谢任何帮助。

PD:对不起我的英语。

Log4j 插入它在 web.xml 中为 log4jConfiguration 找到的值。但是,您必须使用标准的 Log4j 查找语法。要获取环境变量,您可以指定:

<context-param>
    <param-name>log4jConfiguration</param-name>
    <param-value>file:///${env:ENVIROMENT_VARIABLE}/log4j2.xml</param-value>
</context-param>