【问题标题】:How to create log file freshly every time I run my Java Program using Log4j?每次使用 Log4j 运行 Java 程序时,如何重新创建日志文件?
【发布时间】:2017-07-11 02:43:44
【问题描述】:

目前我正在使用 log4j 进行日志记录。它完美地生成了日志文件。但问题是:每当我运行我的程序时,生成的新日志都会附加到同一个文件中已经生成的日志中。 下面是我的 log4j 属性文件:

log4j.rootCategory=INFO,LOGFILE

log4j.logger.org.apache.axis.enterprise=致命,日志文件

log4j.appender.LOGFILE = org.apache.log4j.DailyRollingFileAppender

log4j.appender.LOGFILE.File=applicationLogs.txt

log4j.appender.LOGFILE.Append = true

log4j.appender.LOGFILE.Threshold=DEBUG

log4j.appender.LOGFILE.DatePattern = \u2018.\u2019yyy-MM-dd

log4j.appender.LOGFILE.layout = org.apache.log4j.PatternLayout

log4j.appender.LOGFILE.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n

每次运行程序时,我都需要生成一个新的日志文件。怎么做? 这个文件很完美。但我想稍微修改一下。

【问题讨论】:

  • 尝试将log4j.appender.LOGFILE.Append设为假。使用此设置,它不会附加但会覆盖以前的日志文件。

标签: java logging


【解决方案1】:

采取以下步骤:

1. log4j.appender.LOGFILE.File=applicationLogs_${current_date}.txt

2. log4j.appender.LOGFILE.Append=false.

要让current_date 工作,请编辑您的主类并添加以下代码:

static{ SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy hhmmss"); System.setProperty("current_date", dateFormat.format(new Date())); }

第一个设置将根据当前日期在您的程序每次启动时创建一个新的日志文件(这样您就不会丢失旧日志),第二个设置将不会附加到您的旧文件而是覆盖它。

您可以使用任何一种设置。第一个更可取,因为您不会丢失旧日志。

【讨论】:

    【解决方案2】:

    将追加设置为false,覆盖

    log4j.appender.FILE.Append=false
    

    这篇文章可以帮助你。 https://www.tutorialspoint.com/log4j/log4j_logging_files.htm

    这个问题也会对你有所帮助。 One logfile per run with log4j

    【讨论】:

      【解决方案3】:

      在您的代码中添加如下内容:

      String today= Calendar.getInstance()
          .getTime()
          .toString()
          .replaceAll(" ", "_")
          .replaceAll(":", "");  
      System.setProperty("logfilename", today);
      

      在你的属性文件中:

      log4j.appender.file.File=C:\\${logfilename}.log
      

      【讨论】:

        最近更新 更多