当前位置: 首页 > ds >正文

logback 日志归档,解决主日志和归档日志分别定义不同的周期

问题:

主日志保留了好几十G,虽然归档日志每天都有按日期/按大小归档到指定路径,并进行压缩,这样的情况还是得到期清理日志

解决方案:

有人建议写cron脚本,定期清除,不是我想要的,因为类似的服务有好几套/每套7-8个,我希望logback内部完全搞定。

原始配置:

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false"><include resource="org/springframework/boot/logging/logback/defaults.xml"/><include resource="org/springframework/boot/logging/logback/console-appender.xml"/><springProperty scope="context" name="logging.path"  source="logging.path" defaultValue="${user.dir}/logs"/><springProperty scope="context" name="spring.application.name"  source="spring.application.name"/><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern></encoder></appender><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 指定日志文件的名称 --><file>${logging.path}/${spring.application.name}.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${logging.path}/backup/${spring.application.name}-%d{yyyy-MM-dd}-%i.log.gz</fileNamePattern><MaxHistory>30</MaxHistory><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>100MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern></encoder></appender><root level="INFO"><appender-ref ref="FILE"/></root><root level="DEBUG"><appender-ref ref="STDOUT"/></root>
</configuration>

优化后:

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false"><!-- 引入 Spring Boot 默认日志变量 --><include resource="org/springframework/boot/logging/logback/defaults.xml"/><include resource="org/springframework/boot/logging/logback/console-appender.xml"/><!-- 注入 Spring 属性 --><springProperty scope="context" name="logging.path" source="logging.path" defaultValue="${user.dir}/logs"/><springProperty scope="context" name="spring.application.name" source="spring.application.name"/><!-- 控制台输出器 --><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern></encoder></appender><!-- 实时日志输出器(保留3天) --><appender name="REALTIME_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${logging.path}/${spring.application.name}.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 每天滚动一次 --><fileNamePattern>${logging.path}/${spring.application.name}-%d{yyyy-MM-dd}.log</fileNamePattern><!-- 只保留最近3天的日志 --><MaxHistory>3</MaxHistory></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern></encoder></appender><!-- 归档日志输出器(保留7天,按大小压缩) --><appender name="ARCHIVE_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${logging.path}/archive-temp.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 每天滚动 + 按大小切分 --><fileNamePattern>${logging.path}/backup/${spring.application.name}-%d{yyyy-MM-dd}-%i.log.gz</fileNamePattern><!-- 保留7天 --><MaxHistory>7</MaxHistory><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>100MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern></encoder></appender><!-- 设置根日志级别和输出位置 --><root level="INFO"><appender-ref ref="STDOUT"/><appender-ref ref="REALTIME_LOG"/><appender-ref ref="ARCHIVE_LOG"/></root></configuration>

这样主日志保留3天,方便查看,归档日志保留7-15天,达到了预期效果!

http://www.xdnf.cn/news/6126.html

相关文章:

  • Manus 开放注册:AI 智能体领域的新起点
  • 岩土拉压试验机
  • ​​华为云服务器:智能算力网格​
  • 计数循环java
  • 24年面试问题总结记录
  • 光学(1)
  • CVE-2025-31258 macOS远程视图服务沙箱逃逸漏洞PoC已公开
  • 【老飞飞源码】新版高清飞飞源码+数据库+客户端+服务器端完整文件打包
  • C++语法基础(下)
  • 【经验总结】【乘法替换方法】
  • coco数据集mAP评估
  • function call介绍和实现(以DeepSeek为例)
  • 2025高质量数据集实践指南
  • 无人机避障——(运动规划部分)深蓝学院动力学kinodynamic A* 3D算法理论解读(附C++代码)
  • 聊聊JetCache的CachePenetrationProtect
  • Baklib知识中台驱动企业智慧服务升级
  • WebGIS 开发中的数据安全与隐私保护:急需掌握的要点
  • MongoDB 的主要优势和劣势是什么?适用于哪些场景?
  • 安卓刷机模式详解:Fastboot、Fastbootd、9008与MTK深刷
  • 19.three官方示例+编辑器+AI快速学习webgl_buffergeometry_points
  • 缺乏需求变更的影响评估,如何降低项目风险
  • AI 赋能数智孪生:更快、更智能、更易用
  • OCCT知识笔记之BRepBuilderAPI_NurbsConvert详解
  • 后531时代:光伏产业市场化转型实战策略
  • 使用Spring和Springboot遇到的问题及解决办法
  • 什么叫裸机开发
  • 差分探头量程选择的六大认知误区与应对方案
  • 模板的使用
  • ASP.NET Core Identity 框架中实现密码重置
  • 【Qt】之音视频编程2:QtAV的使用篇