如何将日志文件作为zip文件?

时间:2015-09-26 07:40:52

标签: java logback

我有一个应用程序,我在其中使用logback。我的logback.xml文件是这样的:

<configuration>

  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>myApp.log</file>

    <encoder>
      <Pattern>%date{"yyyy-MM-dd'T'HH:mm:ss", UTC} [%thread] %-5level %logger{36} %L - %msg%n</Pattern>
    </encoder>
  </appender>

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <Pattern>%date{"yyyy-MM-dd'T'HH:mm:ss", UTC} [%thread] %-5level %logger{36} %L - %msg%n</Pattern>
    </encoder>
  </appender>

  <logger name="source.main.FileProcess" level="INFO" />
  <logger name="source.main.FileReadWrite" level="INFO" />
  <logger name="source.main.OperatorLoader" level="DEBUG" />
  <logger name="source.exception.ValidationException" level="INFO" />
  <logger name="source.validation.Validation" level="INFO" />
 <logger name="source.main.OperatorLoader" level="DEBUG" />

  <root level="debug">
    <appender-ref ref="FILE" />
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

现在我想说我的myApp.log文件的大小是否为100 KB然后将其转换为zip文件myApp.log。 任何人都可以帮我这样做吗?

2 个答案:

答案 0 :(得分:2)

您可以使用类似下面的内容,这是我在项目中使用的内容。它会为月份创建文件夹,并以gz格式

保留每日文件
<timestamp key="date" datePattern="yyyy-MM-dd"/>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
   <file>myApp.log</file>
   <append>true</append>
   <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>archived_logs_%d{yyyy-MM,aux}/myApp_%d{yyyy-MM-dd}.log.gz</fileNamePattern>
   </rollingPolicy>
   <maxHistory>180</maxHistory>
   <encoder>
      <pattern>[%d{yyyy.MM.dd HH:mm:ss.SSS}] [%t] [%p] [%logger{5}] [%X] %msg%n</pattern>
   </encoder>
</appender>

答案 1 :(得分:0)

如果您阅读here,则有一节说明FixedWindowRollingPolicyTimeBasedRollingPolicy appenders将压缩日志文件,如果指定的名称以.zip或{{1结尾}}

  

就像FixedWindowRollingPolicy一样,TimeBasedRollingPolicy支持   自动文件压缩。如果值为,则启用此功能   fileNamePattern选项以.gz或.zip结尾。

我猜它会像

.gz