我在项目中使用log4j FileAppender收集某些结果。当我的应用程序重新启动时,我想保留以前的结果文件并开始一个新的文件。那可能吗?

例如:

  • 启动应用程序,将结果写入results.log
  • 应用程序结束
  • 重新启动应用程序,将结果写入results_1.log
  • ...

  • 我已经检查了DailyRollingFileAppender,但这并不是我真正需要的,因为它将在特定日期设置下自动翻转。应用程序重新启动时需要翻转。

    最佳答案

    让您的应用程序动态设置日志文件怎么样?您可以通过在应用程序启动时以编程方式创建文件追加器并将其附加到当前记录器中来实现。

    例如,以下代码将基于当前时间创建新的日志文件。例如results_1336482894.logresults_1336486780.log

        Date now = new Date();
        FileAppender myFileAppender = new FileAppender();
        myFileAppender.setName("myFileAppender");
        myFileAppender.setFile("results_" + now.getTime() + ".log");
        myFileAppender.setLayout(new PatternLayout("%d %-5p [%t]: %m%n"));
        myFileAppender.setThreshold(Level.DEBUG);
        myFileAppender.activateOptions();
    
        Logger myLogger = Logger.getLogger("name of your logger"); //Or use getRootLogger() instead
        myLogger.addAppender(myFileAppender);
    

    08-17 23:17