我在整个基于Spring的项目中使用了apache commons 它在文件tomcat8-stdout.log中记录所有级别 成功。但是,配置log4j监听器后 configuration.xml它仍然在tomcat8-stdout.log文件下记录 而不是log4j配置文件。
- 的进口:
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
private static Log log = LogFactory.getLog(CLASS_NAME.class);
- 的 Web.xml中
<listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener>
<context-param> <param-name>log4jConfigLocation</param-name> <param-value>classpath:resources/log4j.xml</param-value> </context-param>
- 的的log4j.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
<appender name="FILE_APPENDER" class="org.apache.log4j.RollingFileAppender">
<param name="Append" value="true" />
<param name="File" value="${catalina.home}/logs/APP.log" />
<!-- roll over every day at midnight -->
<param name="MaxFileSize" value="10MB" />
<param name="MaxBackupIndex" value="5" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{yyyy-MM-dd HH:mm:ss} %c{1}:%L [%t] %x [%p] %m%n" />
</layout>
</appender>
<root>
<priority value="ALL" />
<appender-ref ref="FILE_APPENDER" />
</root>
<appender name="CONSOLE_APPENDER" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{yyyy-MM-dd HH:mm:ss} %c{1}:%L [%t] %x [%p] %m%n" />
</layout>
</appender>
<logger name="org.apache.catalina.webresources.Cache" level="DEBUG"/>
</log4j:configuration>
- 在tomcat日志下生成的日志:
tomcat8-stdout.2018-05-09.log size: 671kb
APP.log size: 0kb
我找到的解决方案之一是更改导入 公共到log4j,但由于某种原因这是不可能的。我需要一切 在APP.log文件下生成日志并按照配置进行配置 的log4j.xml。
公共日志记录是否有办法遵循log4j配置?任何 配置缺失?