开发者社区> 问答> 正文

一个log4j按天输出的问题,求助。

运行环境:tomcat MyEclipse windows
最近配置了下log日志,按照每天一个文件的格式生成,结果测试时候发现每次更改系统个日期之后,新一天的log会直接覆盖旧的log。我测试的方式是在tomcat部署之后运行,先生成当天的日志,然后更改系统时间,再继续做操作产生新的日志,然后去log目录下检查。
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="LOG.Console" class="org.apache.log4j.ConsoleAppender">
   <param name="Target" value="System.out"/>    
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%p] [%C-%M] %m%n"/>
</layout>
</appender>
<!--INFO信息输出-->
<appender name="LOG.INFO" class="org.apache.log4j.DailyRollingFileAppender">
<!--  --><param name="File" value="E:/logs/info_" />
<param name="DatePattern" value="yyyy-MM-dd'.log'" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%p] [%C-%M] %m%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="INFO" />
<param name="LevelMax" value="INFO" />
</filter>
</appender>
<!--WARN信息输出-->
<appender name="LOG.WARN" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="E:/logs/warn_" />
<param name="DatePattern" value="yyyy-MM-dd'.log'" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%p] [%C-%M] %m%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="WARN" />
<param name="LevelMax" value="WARN" />
</filter>
</appender>
<!--ERROR信息输出-->
<appender name="LOG.ERROR" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="E:/logs/error_" />
<param name="DatePattern" value="yyyy-MM-dd'.log'" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%p] [%C-%M] %m%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="ERROR" />
<param name="LevelMax" value="ERROR" />
</filter>
</appender>
<!-- 根日志输出器root logger -->
<root>
<priority value="info" />
<appender-ref ref="LOG.Console" />
<appender-ref ref="LOG.INFO" />
<appender-ref ref="LOG.WARN" />
<appender-ref ref="LOG.ERROR" />
</root>
</log4j:configuration>

web.xml配置:

<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.xml</param-value>
</context-param> 
<context-param>  
<param-name>log4jRefreshInterval</param-name>  
<param-value>60000</param-value>  
</context-param>  
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

展开
收起
落地花开啦 2016-05-31 17:40:49 2675 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    配置是对的,但是测试方法有问题,测试日志生成时用MyEclipse10运行tomcat然后修改系统时间,log日志无法完成按天生成,而是会新的日志覆盖旧的;但是如果在eclipse上启动tomcat测试,修改系统时间,log日志是可以正常按天生成的,这个是测试环境导致的。这个配置放到服务器上测试,log按天生成没问题的

    2019-07-17 19:22:18
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
俞航翔|基于Log的通用增量Checkpoint 立即下载
数据采集:日志数...[jing.luojing].1477375627.pdf 立即下载
低代码开发师(初级)实战教程 立即下载