首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Log4j中基于时间而不是大小来旋转日志文件?

如何在Log4j中基于时间而不是大小来旋转日志文件?
EN

Stack Overflow用户
提问于 2009-11-11 05:40:44
回答 5查看 51.2K关注 0票数 19

我使用带有RollingFileAppender的Log4j来创建基于大小的日志循环。

如何将其配置为在旋转之前记录到每个文件一段特定的时间?

例如,每个日志文件包含一个小时的日志,并在每个小时的顶部轮换?

我在Java语言中使用Properties对象(而不是log4j.properties文件)编程配置Log4j

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-11-11 05:43:47

您可能想要使用DailyRollingFileAppender。例如,要每小时滚动它们,您可以使用'.'yyyy-MM-dd-HH的DatePattern。对于log4j.properties文件:

代码语言:javascript
复制
log4j.appender.myAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.myAppender.DatePattern='.'yyyy-MM-dd-HH
...

或者对于您的编程配置:

代码语言:javascript
复制
DailyRollingFileAppender appender = new DailyRollingFileAppender();
appender.setDatePattern("'.'yyyy-MM-dd-HH");

Logger root = Logger.getRootLogger();
root.addAppender(appender);

不幸的是,使用DailyRollingFileAppender意味着您无法限制文件大小-如果您在给定的滚动周期内有大量日志,这可能会有问题。

票数 30
EN

Stack Overflow用户

发布于 2013-02-28 16:24:04

另外,

代码语言:javascript
复制
log4j.appender.myAppender=org.apache.log4j.DailyRollingFileAppender
**log4j.appender.myAppender.DatePattern='.'yyyy-MM-dd-HH**

下面的列表显示了log4j定义的所有日期模式,

代码语言:javascript
复制
Minutely  '.'yyyy-MM-dd-HH-mm application.log.2013-02-28-13-54
Hourly '.'yyyy-MM-dd-HH application.log.2013-02-28-13
Half-daily '.'yyyy-MM-dd-a application.log.2013-02-28-AM app.log.2013-02-28-PM
Daily '.'yyyy-MM-dd application.log.2013-02-28
Weekly '.'yyyy-ww application.log.2013-07 app.log.2013-08 
Monthly '.'yyyy-MM application.log.2013-01 app.log.2013-02
票数 4
EN

Stack Overflow用户

发布于 2009-11-11 05:52:14

对于任何滚动文件附加器,需要注意的另一件事是确保一次只有一个JVM访问特定的日志文件。这是因为出于性能原因,log4j缓存了日志文件的大小,如果多个JVM访问相同的文件,那么您的“滚动”将会变得不稳定。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1711423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档