Logback 配置每日轮换和每月压缩

Logback configuration daily rotate and zip monthly

是否可以设置logback的配置每天创建一个.log文件并保留30个文件然后将文件压缩成一个zip并重新开始创建.log?

你可以...

create a .log file every day and keep 30 files

... 使用 RollingFileAppenderTimeBasedRollingPolicy。这是一个例子:

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

    <encoder>
      <pattern>...</pattern>
    </encoder>
  </appender>

但是没有 Logback appender 会执行此操作:

zip the files in one zip and start to create .log again

为此你可以:

  • 编写您自己的附加程序(关于此的大量详细信息in the docs

  • 在 Logback 之外处理这个;您正在处理文件系统上的文件,因此运行 shell 脚本的 cron 作业会查找最近 n 天的所有文件并将它们压缩然后删除它们做这个把戏。