logback如何将日志文件存储在名称为当前日期的文件夹中

时间:2018-06-25 12:31:06

标签: logback

下面的logback.xml将创建一个日志文件,但是我想每天创建一个与当前日期同名的新文件夹并存储新的日志文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <property name="DEV_HOME" value="/home/gaurav/flinklogs" />


   <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${DEV_HOME}/logFile.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!-- daily rollover -->
      <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>

      <!-- keep 30 days' worth of history capped at 3GB total size -->
      <maxHistory>30</maxHistory>
      <totalSizeCap>3GB</totalSizeCap>

    </rollingPolicy>

    <encoder>
      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
    </encoder>
  </appender> 

  <root level="ERROR">
    <appender-ref ref="FILE" />
  </root>

</configuration>

我还尝试了以下filenamefilepattern,但它不起作用

<fileNamePattern>${DEV_HOME}/%d{yyyy/MM, aux}/logFile.%d{yyyy-MM-dd}.log</fileNamePattern>

它是home / gaurav / flinklogs / logFile.log中的creatin日志文件

2 个答案:

答案 0 :(得分:1)

如果同时指定了<file><fileNamePattern>,则当前日志文件位于<file>中,而归档日志文件位于<fileNamePattern>中-参见documentation

您需要删除<file>${DEV_HOME}/logFile.log</file>,然后将<fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>更改为<fileNamePattern>${DEV_HOME}/%d{yyyy/MM, aux}/logFile.%d{yyyy-MM-dd}.log</fileNamePattern>,它应该以您希望的方式工作。

答案 1 :(得分:0)

我使用“Konrad Botor”的答案制作了一个示例代码。 参考下面的代码。

<appender name="dailyAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${payloadLoggingFilePath}-%d{yyyy-MM-dd}.log</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>%m%n</pattern>
        </encoder>