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

如何告诉Log4j fileAppender不要创建零大小的日志文件,log4j,rollingfileappender,Log4j,Rollingfileappender,是否有任何方法可以配置log4j,使其仅在遇到错误时创建日志文件。 我有两个FileAppender,第一个日志文件记录所有日志,第二个日志文件有一个错误阈值 log4j.rootLogger=INFO, stdout, LOGFILE, ERRORFILE // more config log4j.appender.LOGFILE=org.apache.log4j.rolling.RollingFileAppender // more config log4j.appender.ERRORF

是否有任何方法可以配置log4j,使其仅在遇到错误时创建日志文件。 我有两个FileAppender,第一个日志文件记录所有日志,第二个日志文件有一个错误阈值

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来创建日志文件?按需文件生成


我看到了一个非常类似的问题,但因为很久以前有人问过,我想知道现在是否有人有答案

否。该文件是在配置appender(即启动期间)时创建的,而不是在首次使用appender时创建的

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

我还模模糊糊地记得,还有其他一些情况会使这种做法变得不切实际(比如多个线程登录到同一个文件)