当前位置:   article > 正文

日志定期压缩、清除_logback日志清理机制

logback日志清理机制

1、背景

  • 定位问题:打印日志的一个目的是为了快速定位线上问题,日志打印的越详细,问题原因就越容易定位。
  •  磁盘空间有限:随着业务量提升,磁盘空间满了,日志将无法打印了。

为了平衡上面两个条件,我们可以压缩文件和保留一定时间(如7天)的历史文件。

2、日志压缩

我们使用的日志框架是logback,下面的配置也是以logback.xml为例

2.1 保留日志

2.1.1 配置

  1. <!-- error日志输出-保留7天 -->
  2. <appender name="ErrorFile"
  3. class="ch.qos.logback.core.rolling.RollingFileAppender">
  4. <!-- 正在记录的日志文件的路径及文件名 -->
  5. <File>${LOG_HOME:-c:/}logs/error/error.log</File>
  6. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  7. <!-- 基于时间和大小的轮转策略中fileNamePattern位置很重要,他决定了生成文件的名称及轮转时机,以及是否压缩 -->
  8. <!-- %d决定以什么时间维度轮转(但实际轮转时机取决于日志事件的到达时间),比如%d{yyyy/MM}:每个月开始的时候轮转,%d默认为 yyyy-MM-dd:按天轮转 -->
  9. <!-- %i为文件按照maxFileSize大小规定轮转后的序号 -->
  10. <FileNamePattern>${LOG_HOME:-c:/}logs/error/error-%d{yyyy-MM-dd}.%i.log</FileNamePattern>
  11. <!--日志文件保留天数-->
  12. <MaxHistory>7</MaxHistory>
  13. <!--每个文件最多100MB,保留7天的历史记录,但最多20GB-->
  14. <TotalSizeCap>20GB</TotalSizeCap>
  15. <!--重启清理日志文件-->
  16. <CleanHistoryOnStart>true</CleanHistoryOnStart>
  17. <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
  18. <TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  19. <!--每个文件最多100MB-->
  20. <MaxFileSize>100MB</MaxFileSize>
  21. </TimeBasedFileNamingAndTriggeringPolicy>
  22. </rollingPolicy>
  23. <layout class="ch.qos.logback.classic.PatternLayout">
  24. <!--日志文件输出格式-->
  25. <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n</pattern>
  26. </layout>
  27. <!-- 只打印错误日志 -->
  28. <filter class="ch.qos.logback.classic.filter.LevelFilter">
  29. <level>ERROR</level>
  30. <onMatch>ACCEPT</onMatch>
  31. <onMismatch>DENY</onMismatch>
  32. </filter>
  33. </appender>
  34. <!-- 所有日志输出-保留7天 -->
  35. <appender name="AllFile"
  36. class="ch.qos.logback.core.rolling.RollingFileAppender">
  37. <File>${LOG_HOME:-c:/}logs/all/all.log</File>
  38. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  39. <FileNamePattern>${LOG_HOME:-c:/}logs/all/all-%d{yyyy-MM-dd}.%i.log</FileNamePattern>
  40. <MaxHistory>7</MaxHistory>
  41. <TotalSizeCap>20GB</TotalSizeCap>
  42. <CleanHistoryOnStart>true</CleanHistoryOnStart>
  43. <TimeBasedFileNamingAndTriggeringPolicy
  44. class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  45. <MaxFileSize>100MB</MaxFileSize>
  46. </TimeBasedFileNamingAndTriggeringPolicy>
  47. </rollingPolicy>
  48. <layout class="ch.qos.logback.classic.PatternLayout">
  49. <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n</pattern>
  50. </layout>
  51. </appender>

2.1.2 cleanHistoryOnStart

        如果设置为true,则将在追加程序启动时执行归档删除。默认情况下,此属性设置为false。
通常在过渡期间执行归档删除。但是,某些应用程序的生存时间可能不足以触发翻转。因此,对于这种短暂的应用程序,归档删除可能永远不会有执行的机会。通过将cleanHistoryOnStart设置为true,将在附加程序启动时执行归档删除。

 

2.2 压缩日志

fileNamePattern:后缀以".zip"或".gz"结尾,则开启日志文件压缩。

  1. <!-- 压缩日志输出 start -->
  2. <!-- 所有日志输出 -->
  3. <appender name="GzAllFile"
  4. class="ch.qos.logback.core.rolling.RollingFileAppender">
  5. <File>${LOG_HOME:-c:/}logs/gz/all/all.log</File>
  6. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  7. <!-- 后缀以".zip"".gz"结尾,则开启日志文件压缩 -->
  8. <FileNamePattern>${LOG_HOME:-c:/}logs/gz/all/all-%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern>
  9. <MaxHistory>3600</MaxHistory>
  10. <TimeBasedFileNamingAndTriggeringPolicy
  11. class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  12. <MaxFileSize>100MB</MaxFileSize>
  13. </TimeBasedFileNamingAndTriggeringPolicy>
  14. </rollingPolicy>
  15. <layout class="ch.qos.logback.classic.PatternLayout">
  16. <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n
  17. </pattern>
  18. </layout>
  19. </appender>
  20. <!-- error日志输出 -->
  21. <appender name="GzErrorFile"
  22. class="ch.qos.logback.core.rolling.RollingFileAppender">
  23. <File>${LOG_HOME:-c:/}logs/gz/error/error.log</File>
  24. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  25. <FileNamePattern>${LOG_HOME:-c:/}logs/gz/error/error-%d{yyyy-MM-dd}.%i.log.gz
  26. </FileNamePattern>
  27. <MaxHistory>3600</MaxHistory>
  28. <TimeBasedFileNamingAndTriggeringPolicy
  29. class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  30. <MaxFileSize>100MB</MaxFileSize>
  31. </TimeBasedFileNamingAndTriggeringPolicy>
  32. </rollingPolicy>
  33. <layout class="ch.qos.logback.classic.PatternLayout">
  34. <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n
  35. </pattern>
  36. </layout>
  37. <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印错误日志 -->
  38. <level>ERROR</level>
  39. <onMatch>ACCEPT</onMatch>
  40. <onMismatch>DENY</onMismatch>
  41. </filter>
  42. </appender>
  43. <!-- 压缩日志输出 end -->

 3、示例代码

share: 分享仓库 - Gitee.com

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号