1

我正在使用 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 中是否有一个选项来告诉记录器是覆盖还是添加输出?

4

2 回答 2

1

为此,您需要使用RollingFileAppender

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

于 2012-08-07T09:55:57.593 回答
1

您可以使用 FileAppender,将 log4j.appender.fileAppender.Append=false 属性添加到它

于 2012-08-07T10:11:13.773 回答