log4j2 - 找到配置文件

时间:2015-03-25 13:50:44

标签: spring log4j2

我正在使用servlet 2.5,我按照说明设置了监听器和过滤器,但我的webapp仍抱怨无法找到配置文件。我的监听器,上下文参数,过滤器和过滤器映射都被定义为我们web.xml中各自位置的第一个值。我确保log4j-web-2.2.jar也在我的类路径中。还有其他选择从spring bean加载它们吗?我想基于catalina.properties中的值加载不同的配置文件。 有人可以建议吗?

 <listener>
    <listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class>
</listener>
<context-param>
    <param-name>log4jConfiguration</param-name>
    <param-value>classpath:*${sys:log4j2.xml.name}</param-value>

<filter>
    <filter-name>log4jServletFilter</filter-name>
    <filter-class>org.apache.logging.log4j.web.Log4jServletFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>log4jServletFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
    <dispatcher>ERROR</dispatcher>

</filter-mapping>

2 个答案:

答案 0 :(得分:1)

经过大量的摆弄,我了解到使用类路径表示法我们不能使用系统变量。所以我采用了以下方法。这基本上允许我们根据我们的环境提供不同的文件名。必须在catalina.properties中指定此变量。

<context-param>
    <param-name>log4jConfiguration</param-name>
    <param-value>/WEB-INF/config/${sys:log4j.fileName}</param-value>

答案 1 :(得分:0)

如果您的配置文件名为log4j2.xml且位于WEB-INF /目录中,则无需在web.xml中指定log4jConfiguration上下文参数。