Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 每天滚动日志文件,无论是否记录任何消息_Java_Logging_Log4j_Rollingfileappender - Fatal编程技术网

Java 每天滚动日志文件,无论是否记录任何消息

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属性中有以下配置

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小时,记录伪语句“这是一条伪消息”
  • 由于文件现在不是空的,因此log4j负责滚动

  • 我们每天都发送日志文件,我们决定每12小时记录一个虚拟语句,说“这是一条虚拟消息”,这解决了滚动问题

    使用log4j2.5中新的
    CronTriggeringPolicy
    ,我找到了一个没有伪行的解决方案,我发布了这个解决方案。不幸的是,它仍然需要一些自定义插件代码,因为
    DefaultRolloverStrategy
    的行为就是简单地删除空文件。

    所以您希望在没有任何事情发生的日子里使用空日志文件?不幸的是,是的。。这是要求。实际上,我们将昨天的日志发送到另一个系统,在那里,它期望app.log.dd-MM-yyyy中的日志文件名,并且他们每天都需要它(如果某一天丢失了文件,那么它就会抛出错误)。我不确定Log4j是否可以做到这一点。你用什么来发送文件?如果文件丢失,该系统是否可以不创建文件?基本上,客户端需要查看日志。所以他们开发了一些代码(我们真的不知道),我们通过电子邮件向他们发送文件。