仅存档具有回溯的旧日志

时间:2013-02-14 06:48:09

标签: java logging slf4j logback

是否可以仅使用日志存档旧文件?

例如,我需要将日志存储为文本14天,然后存档?

目前使用的appender:

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <file>../log/mylog.log</file>
  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>../log/mylog.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
      <maxFileSize>50MB</maxFileSize>
    </timeBasedFileNamingAndTriggeringPolicy>
    <maxHistory>50</maxHistory>
  </rollingPolicy>

  <encoder>
    <pattern>%d{yyyy.MM.dd HH:mm:ss} %-5level %logger{36} - %msg%n</pattern>
  </encoder>

</appender>

他会在更改日志文件后立即归档文件。

slf4j-1.7.2 / logback-1.0.9

1 个答案:

答案 0 :(得分:1)

翻转日志文件是logback中归档日志文件的别名,因此滚动意味着归档。

  

我需要将日志存储为文本14天,然后存档

然后不要对滚动策略设置最大文件限制。但是,我认为没有必要将其作为文本。据我所知,logback将日志归档为.gz格式。您可以使用一堆命令直接查看.gz格式的日志。例如,zcat,zgrep,你可以直接用less来看一下gz格式的日志。

您可以编写一个简单的shell程序,将14天的日志从目录移动到另一个地方(这是真正的归档)。该shell只需要通过设置一个cron作业每天运行一次。