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 - 滚动文件附加程序不基于最大文件大小滚动的主要内容,如果未能解决你的问题,请参考以下文章
如何为滚动文件系统日志配置 uber-go/zap 记录器?
Apache Flink RollingFileAppender