log4j - 滚动文件附加程序不基于最大文件大小滚动

Posted

技术标签:

【中文标题】log4j - 滚动文件附加程序不基于最大文件大小滚动【英文标题】:log4j - Rolling File Appender not rolling based on Max File size 【发布时间】:2015-03-20 14:32:02 【问题描述】:

下面是我使用 log4j 生成日志文件然后根据大小滚动它的代码。正在生成文件,但是文件不会根据最大文件大小滚动。我在一篇文章中听说我们必须使用 apache-log4j-extras 并且正在使用 apache-log4j-extras-1.2.17。一旦达到 50KB,我就尝试翻转,但它没有翻转。有人可以告诉我可能出了什么问题吗?

我正在使用 log4j-1.2.17 和 apache-log4j-extras-1.2.17 版本的 jar。

log4j.appender.Flows=org.apache.log4j.RollingFileAppender
log4j.appender.Flows.File=E:/Logs/Flows.log
log4j.appender.Flows.MaxFileSize=50KB
log4j.appender.Flows.MaxBackupIndex=2
log4j.appender.Flows.layout=org.apache.log4j.PatternLayout
log4j.appender.Flows.layout.ConversionPattern=%d %-5p - %c %x %m%n

【问题讨论】:

【参考方案1】:

如果您使用的是Apache Extras™ for Apache log4j™,您可能需要使用org.apache.log4j.rolling.RollingFileAppender

log4j.appender.Flows=org.apache.log4j.rolling.RollingFileAppender  
log4j.appender.Flows.rollingPolicy=org.apache.log4j.rolling.FixedWindowRollingPolicy  
log4j.appender.Flows.rollingPolicy.maxIndex=2  
log4j.appender.Flows.triggeringPolicy=org.apache.log4j.rolling.SizeBasedTriggeringPolicy  
log4j.appender.Flows.triggeringPolicy.MaxFileSize=51200  
log4j.appender.Flows.rollingPolicy.FileNamePattern=E:/Logs/Flows-%i.log  
log4j.appender.Flows.rollingPolicy.ActiveFileName=E:/Logs/Flows.log
log4j.appender.Flows.layout=org.apache.log4j.PatternLayout  
log4j.appender.Flows.layout.ConversionPattern=%d %-5p - %c %x %m%n  

【讨论】:

非常感谢。 “rollingPolicy.maxIndex=2”和“MaxBackupIndex”一样吗? 不完全一样。查看更多here。 我使用了您的代码,但即便如此,它也没有按预期滚动。文件大小已超过 100kb,但仍未滚动。 大小以字节为单位,不带 posfixe。 权限在文件滚动中是否起重要作用?我的文件已创建并且它在我的本地环境中工作,但相同的脚本 - 属性文件在另一个环境中不工作(不滚动)?【参考方案2】:

问题似乎是由于在类加载器的多个级别中存在 log4j*.jar 引起的。 例如。一次由 Tomcat 提供,第二次由 Web 应用程序直接提供。在 Tomcat 安装中从我们的 WAR 中删除 log4j 为我们解决了这个问题。

这样做,我们可以避免使用 log4j extras。

【讨论】:

以上是关于log4j - 滚动文件附加程序不基于最大文件大小滚动的主要内容,如果未能解决你的问题,请参考以下文章

如何强制 logback 在翻转时创建新文件

如何为滚动文件系统日志配置 uber-go/zap 记录器?

Apache Flink RollingFileAppender

Log4J2 - 在运行时分配文件附加程序文件名

log4j:警告找不到记录器的附加程序(运行 jar 文件,而不是 Web 应用程序)[重复]

带有路由附加程序的 Log4J2 不归档文件