Java 每天滚动日志文件,无论是否记录任何消息
我的log4j属性中有以下配置Java 每天滚动日志文件,无论是否记录任何消息,java,logging,log4j,rollingfileappender,Java,Logging,Log4j,Rollingfileappender,我的log4j属性中有以下配置 log4j.rootLogger=ERROR,FA log4j.appender.FA=org.apache.log4j.rolling.RollingFileAppender log4j.appender.FA.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy log4j.appender.FA.RollingPolicy.FileNamePattern=.\\logs\\app.log-
log4j.rootLogger=ERROR,FA
log4j.appender.FA=org.apache.log4j.rolling.RollingFileAppender
log4j.appender.FA.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
log4j.appender.FA.RollingPolicy.FileNamePattern=.\\logs\\app.log-%d{dd-MM-yyyy}
log4j.appender.FA.File=.\\logs\\app.log
log4j.appender.FA.layout=org.apache.log4j.EnhancedPatternLayout
log4j.appender.FA.layout.ConversionPattern=%d %p %t %c: %m%n
log4j.appender.FA.Append=true
有时,在报告下一个错误之前,不会报告错误,并且在接下来的连续几天内不会滚动文件。由于appender设置为错误级别,所以在报告某些错误消息之前,它不会滚动日志文件
我的问题是我们是否可以开发一些机制,以便无论appender是否有一些错误消息需要记录,都能在每午夜滚动文件?
我有一个java应用程序,我们正在使用log4j api进行日志记录,所以希望使用java或log4j的解决方案
提前谢谢
注意:-由于大小限制,我无法将记录器级别设置为Info/Debug,因为不滚动我们必须使用下面的方法的空文件是log4j行为
我们每天都发送日志文件,我们决定每12小时记录一个虚拟语句,说“这是一条虚拟消息”,这解决了滚动问题 使用log4j2.5中新的
CronTriggeringPolicy
,我找到了一个没有伪行的解决方案,我发布了这个解决方案。不幸的是,它仍然需要一些自定义插件代码,因为DefaultRolloverStrategy
的行为就是简单地删除空文件。所以您希望在没有任何事情发生的日子里使用空日志文件?不幸的是,是的。。这是要求。实际上,我们将昨天的日志发送到另一个系统,在那里,它期望app.log.dd-MM-yyyy中的日志文件名,并且他们每天都需要它(如果某一天丢失了文件,那么它就会抛出错误)。我不确定Log4j是否可以做到这一点。你用什么来发送文件?如果文件丢失,该系统是否可以不创建文件?基本上,客户端需要查看日志。所以他们开发了一些代码(我们真的不知道),我们通过电子邮件向他们发送文件。