DailyRollingFileAppender生成的文件是不带时间戳的,必须在某个时间点后,才对原来文件加上时间戳进行重命名。
比如时间戳精确到小时,格式为.yyyy-MM-dd-HH,当前时间为2011-05-05的5点,那么日志为
log
时间变为6点之后(并且6点有日志访问),日志为
log
log.2011-05-05-05
因为log4j是事件触发的,如果某段时间没有日志访问,即使时间点到了,也不会加上时间戳进行重命名。比如两天后才有日志访问,这时才产生log.2011-05-05-05这个文件。这样会造成日志统计中,统计不到这个文件。
解决方法是,生成日志文件的时候就已经加上时间戳。比如5点时候的日志,就已经是log.2011-05-05-05。原log4j没有实现这个功能,需要自己继承FileAppender来实现一个Appender。我看了一下源码,可以参考DailyRollingFileAppender,修改一下它的构造函数和rollOver。自己没有去实验,不知道能不能成功。
apache-log4j-extras是log4j的扩展包,其中TimeBasedRollingPolicy可以实现这个需求。
需要的包:
log4j-1.2.15.jar
apache-log4j-extras-1.0.jar
注意:log4j必须是1.2.15以上,14不行
log4j配置文件不能使用properties,必须使用xml。配置可参考:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
<!-- appender -->
<!-- STDOUT -->
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %p [%c] - %m%n" />
</layout>
</appender>
<!-- FILE -->
<appender name="FILE"
class="org.apache.log4j.rolling.RollingFileAppender">
<rollingPolicy
class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
<param name="FileNamePattern"
value="d:/logs/file.%d{yyyy-MM-dd-HH}" />
</rollingPolicy>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%m%n" />
</layout>
</appender>
<logger name="view">
<level value="info" />
<appender-ref ref="FILE" />
</logger>
<root>
<level value="info" />
<appender-ref ref="STDOUT" />
</root>
</log4j:configuration>
注意:org.apache.log4j.rolling.RollingFileAppender是rolling包下的,而不是原来的org.apache.log4j.RollingFileAppender
测试用例:
public static void main(String[] args) {
Logger logger = Logger.getLogger("view");
logger.info("test");
}
TimeBasedRollingPolicy的使用可参考:
http://logging.apache.org/log4j/companions/extras/apidocs/org/apache/log4j/rolling/TimeBasedRollingPolicy.html
分享到:
相关推荐
log4j.rootLogger=debug,CONSOLE,testfile,A1,MAIL ################### # Console Appender ################### log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.Target=...
log4j中配置日志文件相对路径方法分析 方法一、 解决的办法自然是用相对路径代替绝对路径,其实log4j的FileAppender本身就有这样的机制,如:log4j.appender.logfile.File=${WORKDIR}/logs/app.log 其中“${...
log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender log4j.appender.ROLLING_FILE.Threshold=ERROR log4j.appender.ROLLING_FILE.File=rolling.log //文件位置,也可以用变量${java.home}、rolling....
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件), org.apache.log4j.WriterAppender(将日志信息...
设置log4j的根目录,值为 日志等级(DEBUG,INFO,WARN,ERROR,FATAL) , 输出目标名称 log4j.rootLogger=DEBUG,A1 设置输出方式,常用的有: ConsoleAppender 在控制器中输出信息 RollingFileApperder 在文件中输出...
设置log4j的根目录,值为 日志等级(DEBUG,INFO,WARN,ERROR,FATAL) , 输出目标名称 log4j.rootLogger=DEBUG,A1 设置输出方式,常用的有: ConsoleAppender 在控制器中输出信息 RollingFileApperder 在文件中输出...
Log4j 学习笔记. 1. Log4j的类图 2. Logger:日志写出器 1. Logger的输出方法 2. Logger的命名规则 ...5. 我自己的一个使用xml文件配置log4j环境的很简单的例子 6. Log4j的编码习惯 参考资料
log4j.appender.llg=org.apache.log4j.RollingFileAppender #文件位置 #配置llg这个日志文件的位置 log4j.appender.llg.File=f:/llg/log.log #挂上 #。。。没想机密,都配置好了,还要有一个确认 log4j.appender.llg...
记录了C++中使用Log4Cpp的整体使用源码,具体可参考:http://blog.csdn.net/jptiancai/article/details/23678073
如何用Log4net 生成Log日志记录文档。内家详细的注释和说明,解释每一个指令的用法。 示例: <!--保存到文件,还可以保存到数据库等--> <appender name="ErrorAppender" type="log4...
====================== 目录不可以创建,但是log文件是自动创建得呢 log4j.appender.R=org.apache.log4j.RollingFileAppender log4j.appender.R.File=C:\bea\user_projects\domain\log ==========================...
本工程用于研究log4j日志输出目的地org.apache.log4j.RollingFileAppender的使用方法 本工程编码方式:UTF-8 本工程开发工具:MyEclipse
关键看这里吧(Permission denied), 一直没有看正方,以为是配置日志文件 找不到有问题,下面是部分异常 10:35:09,498 |-ERROR in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - openFile(null,...
RollingFileAppender 将日志以回滚文件的形式写到文件中。 SmtpAppender 将日志写到邮件中。 - SmtpPickupDirAppender 将消息以文件的方式放入一个目录中,像IIS SMTP agent这样的SMTP代理就可以阅读或发送它们。...
只实现了RollingFileAppender ,文件可以按指定大小 定量产生,但是常用的记录日志方法是 按天生产一个日志文件,所以就从官网上下了源码,简单的修改下,增加了对DailyRollingFileAppender 的支持,可以配置按天...
同时兼具RollingFileAppender 和TimeBasedRollingFileAppender 转存文件的功能。也具备以当前日期作为目录存储日志文件。
Ionic Java SDK示例Web应用程序/ Log4j / Tomcat Ionic SDK提供了一个易于使用的Ionic Platform界面。 特别是,Ionic SDK公开了执行密钥管理和数据加密的功能。 该示例应用程序采用Web应用程序(webapp)的形式,...
log4j详解与实战 - 企业应用 Logger - 日志写出器,供程序员输出日志信息 Appender - 日志目的地,把格式化好的日志信息输出到指定的地方去 ConsoleAppender - 目的地为控制台的Appender FileAppender - 目的地...
完整分析了log4cpp的整体架构,详细介绍了log4cpp的这个重要组件的实现分析了log4cpp内部所使用的设计模式。介绍了log4cpp中的Category的完整实现细节,介绍了所有的Layout及其子类的具体实现。也详细介绍了比较常用...
log4j.appender.server=org.apache.log4j.RollingFileAppender log4j.appender.server.layout=org.apache.log4j.PatternLayout log4j.appender.server.File=logs/azkaban-execserver.log log4j.appender.server....