将日期添加到logback.xml

时间:2017-07-11 09:10:51

标签: xml slf4j

尝试搜索它,但我继续将...IS_UNDEFINED作为我的文件名。我只想将当前日期附加到日志文件中。 logback.xml文件的任何简单示例?

这是我最近的尝试:

<Properties>
  <property name="filePattern">log_${date:yyyy-MM-dd}.log</property>
</Properties>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
  <file>${application.home:-.}/logs/${filePattern}</file>
  <encoder>
    <pattern>%date [%level] from %logger in %thread - %message%n%xException</pattern>
  </encoder>
</appender>

2 个答案:

答案 0 :(得分:6)

Regular FileAppender不支持文件名中的模式, 所以你必须改为使用RollingFileAppender + TimeBasedRollingPolicy

  

RollingFileAppender 扩展了FileAppender,具有翻转日志文件的功能。例如,RollingFileAppender可以记录到名为log.txt文件的文件,并且一旦满足某个条件,就将其记录目标更改为另一个文件。

     

TimeBasedRollingPolicy 既易于配置又非常强大。它允许根据时间进行翻转。可以指定翻转每天,每周或每月发生一次。

像这样:

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${application.home:-.}/logs/log_.%d{yyyy-MM-dd}.log</fileNamePattern>
      </rollingPolicy>
  <encoder>
    <pattern>%date [%level] from %logger in %thread - %message%n%xException</pattern>
  </encoder>
</appender>

答案 1 :(得分:3)

我这样想:

  <timestamp key="timestamp" datePattern="yyyyMMdd"/>

  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>${application.home:-.}/logs/log_${timestamp}.log</file>
    <encoder>
      <pattern>%date [%level] - %message%n%xException</pattern>
    </encoder>
  </appender>