资源描述:
《Log4j定时打印日志及添加模块名配置的Java代码实例》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Log4j定时打印日志及添加模块名配置的Java代码实例这篇文章主要介绍了Log4j定时打印口志及添加模块名配置的Java代码实例丄og4j是Apache的一个开源Java日志项目,需要的朋友可以参考下配置间隔时间,定时打印tl志接到个需求,通过Iog4j定时打印日志,需求描述如下:需要能够定时打印日志,时间间隔可配。说到定时,首先想到了DailyRollingFileAppender类,各种定时,根据datePattern,这个nJ以参考类SimpleDateFormat类,常见的一些定时设置如下:l.'/yyyy
2、-MM:每月2.,.'yyyy-ww:每周3.'.'yyyy-MM-dd:每天4.'.'yyyy-MM-dd-a:每天两次5.'.'yyyy-MM-dd-HH:每小时6.'.'yyyy-MM-dd-HH-mm:每分钟通过观察发现没有n分钟类似的日期格式,因此,在DailyRollingFileAppender类基础上进行自定义类的编写。过程如下:1)拷贝DailyRollingFileAppender类源码并并改名MinuteRollingAppender,为了在Iog4j.xml中配置,增加配置项intervalT
3、ime并添加set、get方法;privateintintervalTime=10;2)由于DailyRollingFileAppender类使用了Rollingcalendar类来计算下一次间隔时间,而需要传递参数intervalTime,因此修改Rollingcalendar类为内部类;由于其方法就是根据datePattern来计算下一次rollOver动作的时间,此时不需要其他的时间模式,修改方法如下:publicDategetNextCheckDate(Datenow){this.setTime(now);t
4、his.setfCalendar.SECOND,0);this.set(Calendar.MILLISECOND,0);this.add(Calendar.MINUTE,intervalTime);returngetTime();}3)按照分钟可配时,时间模式就需要禁用了,将其改为staticfinal,响应的去掉其get、set方法和MinuteRollingAppender构造函数中的datePattern参数privatestaticStringDATEPATTERN="'.'yyyy-MM-dd-HH-mm'
5、.log'";同样,服务于多种datePattern的方法computeCheckPeriod()也可以删除;至此改造就完成了,成品类如下:packagenet.csdn.blog;importjava.io.File;importjava.io」OException;importjava.io」nterruptedlOException;importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava.util.Date;importjava.
6、util.GregorianCalendar;importorg.apache」og4j.FileAppender;importorg.apache.Iog4j丄ayout;importorg.apache.log4j.helpers丄ogLog;importorg.apache」og4j.spi.LoggingEvent;/***按分钟可配置定时appender**@authorcoder^xia**/publicclassMinuteRollingAppenderextendsFileAppender{/***T
7、hedatepattern・Bydefault,thepatternissettoin.,yyyy-MM-ddM*meaningdailyrollover.*/privatestaticStringDATEPATTERN="'.'yyyy-MM-dd-HH-mm'.log'";/***间隔时间,单位:分钟*/privateintintervalTime=10;/***ThelogfilewillberenamedtothevalueofthescheduledFilename*variablewhenthenexti
8、ntervalisentered・Forexample,iftherollover*periodisonehour,thelogfilewillberenamedtothevalueof*HscheduledFilename"atthebeginningofthenexthour.*Theprecisetimewhenarolloveroccu