【问题标题】:Java/Logging: How to log to separate log file every time?Java/Logging:如何每次都记录到单独的日志文件?
【发布时间】:2022-01-19 02:16:59
【问题描述】:

我正在编写一个命令行 Java 程序,每次启动应用程序时,我都想记录到一个新文件(目前,我使用当前时间戳作为日志文件的名称)。我的应用程序还使用了许多也记录内容的库。如何动态创建一个记录器,它将获取我的代码的日志记录+库完成的任何日志并将其重定向到控制台+一个新文件?我正在使用 SLF4j + logback。到目前为止,我有类似下面的东西可以动态创建记录器,但这个记录器不捕获第三方日志记录:

public static Logger createLogger(String pattern) {
        LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();

        PatternLayoutEncoder layoutEncoder = new PatternLayoutEncoder();
        layoutEncoder.setPattern(pattern);
        layoutEncoder.setContext(loggerContext);
        layoutEncoder.start();

        FileAppender<ILoggingEvent> fileAppender = new FileAppender<>();
        fileAppender.setFile(System.currentTimeMillis() + ".log");
        fileAppender.setEncoder(layoutEncoder);
        fileAppender.setContext(loggerContext);
        fileAppender.start();


        ch.qos.logback.classic.Logger logger = loggerContext.getLogger("customLogger");
        logger.addAppender(fileAppender);
        logger.setLevel(Level.TRACE);
        logger.setAdditive(true);

        return logger;
    }

【问题讨论】:

    标签: java logging logback slf4j


    【解决方案1】:

    完全可以通过配置来做到这一点。有an example in the logback documentation

    <configuration>
    
      <!-- Insert the current time formatted as "yyyyMMdd'T'HHmmss" under
           the key "bySecond" into the logger context. This value will be
           available to all subsequent configuration elements. -->
      <timestamp key="bySecond" datePattern="yyyyMMdd'T'HHmmss"/>
    
      <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <!-- use the previously created timestamp to create a uniquely
             named log file -->
        <file>log-${bySecond}.txt</file>
        <encoder>
          <pattern>%logger{35} - %msg%n</pattern>
        </encoder>
      </appender>
    
      <root level="DEBUG">
        <appender-ref ref="FILE" />
      </root>
    </configuration>
    

    【讨论】:

      猜你喜欢
      • 2013-08-13
      • 1970-01-01
      • 2011-10-20
      • 2012-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-25
      相关资源
      最近更新 更多