如何告诉Log4j fileAppender不创建零大小的日志文件

时间:2014-06-18 15:32:34

标签: log4j rollingfileappender

有没有办法只在遇到错误时才能配置log4j来创建日志文件。 我有2个fileAppenders,第一个logfile记录所有日志,第二个记录有ERROR阈值。

log4j.rootLogger=INFO, stdout, LOGFILE, ERRORFILE
// more config
log4j.appender.LOGFILE=org.apache.log4j.rolling.RollingFileAppender 
// more config
log4j.appender.ERRORFILE=org.apache.log4j.rolling.RollingFileAppender
log4j.appender.ERRORFILE.Threshold=ERROR

当我运行我的应用程序时,ERRORFILE appender总是创建错误日志文件,无论是否运行了LOGGER.error(" foo")。

遇到第一个LOGGER.error()语句时,是否可以触发此ERRORFILE appender来创建logFile?按需文件生成?

我看到了一个非常相似的问题here,但由于之前有人提出这个问题,我想知道现在是否有人有答案。

1 个答案:

答案 0 :(得分:0)

没有。配置appender时(即在启动期间)创建文件,而不是第一次使用appender时创建文件。

这与滚动appender的性质有关:它可能需要清理现有的日志文件。如果没有人记录,那么旧的日志文件将永远存在于您的硬盘上。因此它在创建appender时运行清理。

我也朦胧地记得,还有其他一些极端情况会使这种情况变得不切实际(比如几个线程记录到同一个文件中)。