如何在 Log4j 中根据时间而不是大小轮换日志文件?
我将 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您可能想使用 DailyRollingFileAppender。例如,要每小时滚动一次,您可以使用
'.'yyyy-MM-dd-HH
的 DatePattern。对于 log4j.properties 文件:或者对于您的编程配置:
不幸的是,使用 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:Or for your programmatic configuration:
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.
此外,
以下列表显示了 log4j 定义的所有日期模式,
Additionally,
The following list shows all the date patterns which have defined by log4j,
对于任何滚动文件附加程序要注意的另一件事是确保一次只有一个 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.
使用 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.您需要使用 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.