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

时间:2016-05-12 14:27:34

标签: java xml tomcat web.xml log4j2

我正在为TomCat 7.0服务器开发一个java web-app(v3.0),我在加载log4j2.xm l文件时遇到了麻烦。

我在项目之外定义了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

看起来它并没有“翻译”。变量。

任何帮助都会得到很好的帮助。

PD:抱歉我的英文。

1 个答案:

答案 0 :(得分:2)

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

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