Java Log4j覆盖FileAppender的输出

Java Log4j覆盖FileAppender的输出,java,log4j,logfile,Java,Log4j,Logfile,我使用Log4j记录我的应用程序的输出。 log4j.properties文件包含以下内容: log4j.logger.DEFAULT_LOGGER=INFO,main_log, stdout log4j.additivity.DEFAULT_LOGGER = false # Direct log messages to a log file log4j.appender.main_log=org.apache.log4j.FileAppender lo

我使用Log4j记录我的应用程序的输出。 log4j.properties文件包含以下内容:

    log4j.logger.DEFAULT_LOGGER=INFO,main_log, stdout
    log4j.additivity.DEFAULT_LOGGER = false

    # Direct log messages to a log file
    log4j.appender.main_log=org.apache.log4j.FileAppender
    log4j.appender.main_log.File=mainLog.log
    log4j.appender.main_log.layout=org.apache.log4j.PatternLayout
    log4j.appender.main_log.layout.ConversionPattern=%d{yyyy mm dd HH:mm:ss} %5p %c{1}:%L - %m%n

    # Direct log messages to stdout
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target=System.out
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d{yyyy mm dd HH:mm:ss} %5p %c{1}:%L - %m%n
目前发生了以下情况。当我在调用

static Logger log = Logger.getLogger("DEFAULT_LOGGER");
log.fatal("Process Logger");
它将输出打印到stdout和file.log,这很好。但当我第二次启动应用程序时,它会将输出添加到现有文件中。但是我想覆盖日志文件。这可能吗?(我不想使用Java进行删除,当然我也不想手动删除)Log4J中是否有一个选项告诉记录器要覆盖或添加输出?

您需要使用它

检查类似行中的以下SO问题:


您可以使用FileAppender,向其中添加log4j.appender.FileAppender.Append=false属性