我正在使用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>
答案 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上下文参数。