如何在 Log4j 中根据时间而不是大小轮换日志文件?

发布于 2024-08-10 06:27:17 字数 237 浏览 2 评论 0原文

我将 Log4j 与 RollingFileAppender 结合使用来创建基于大小的日志轮换。

如何将其配置为在轮换之前在一定的时间内记录到每个文件?

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

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

I use Log4j with the RollingFileAppender to create a log rotation based on size.

How can I configure it to log to each file for a certain amount of time before rotating?

For example, so that each log file contains one hour of logs, rotating at the top of each hour?

I configure Log4j programatically in Java using a Properties object (as opposed to a log4j.properties file)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

两人的回忆 2024-08-17 06:27:17

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

log4j.appender.myAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.myAppender.DatePattern='.'yyyy-MM-dd-HH
...

或者对于您的编程配置:

DailyRollingFileAppender appender = new DailyRollingFileAppender();
appender.setDatePattern("'.'yyyy-MM-dd-HH");

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

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

You probably want to use a DailyRollingFileAppender. To roll them hourly, for example, you'd use a DatePattern of '.'yyyy-MM-dd-HH. For a log4j.properties file:

log4j.appender.myAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.myAppender.DatePattern='.'yyyy-MM-dd-HH
...

Or for your programmatic configuration:

DailyRollingFileAppender appender = new DailyRollingFileAppender();
appender.setDatePattern("'.'yyyy-MM-dd-HH");

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

Unfortunately, using a DailyRollingFileAppender means that you can't limit the file size - this could be problematic if you have tons of logs in the given rolled period.

秋千易 2024-08-17 06:27:17

此外,

log4j.appender.myAppender=org.apache.log4j.DailyRollingFileAppender
**log4j.appender.myAppender.DatePattern='.'yyyy-MM-dd-HH**

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

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

Additionally,

log4j.appender.myAppender=org.apache.log4j.DailyRollingFileAppender
**log4j.appender.myAppender.DatePattern='.'yyyy-MM-dd-HH**

The following list shows all the date patterns which have defined by log4j,

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
月下凄凉 2024-08-17 06:27:17

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

The other thing to be careful of with any rolling file appender is to make sure only one JVM access a particular log file at a time. This is because log4j caches the log file size for performance reasons, and your 'rolling' will get wonky if multiple JVMs access the same files.

苏佲洛 2024-08-17 06:27:17

使用 DailyRollingFileAppender

特别是,将其 'datePattern' 属性设置为 '.'yyyy-MM-dd-HH 将导致文件每小时轮换一次。

Use a DailyRollingFileAppender.

In particular, setting its 'datePattern' property to '.'yyyy-MM-dd-HH would cause file to rotate every hour.

没︽人懂的悲伤 2024-08-17 06:27:17

您需要使用 DailyRollingFileAppender。尽管其名称具有误导性,但它可以配置为在长达几分钟的可配置时间段内运行。

You need to use the DailyRollingFileAppender. Despite its misleading name it can be configured in a to run at configurable time periods up to minutes.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文