目录
问题现象
排查占用
自定义客户端日志配置未生效
总结
问题现象
收到项目报警:磁盘占用率超标通知
排查占用
从上述可以看出,实质是跟正常业务日志无关的,/home/work/log挂出来了,与/根目录下无关
查看根目录下日志占用大小,可以看到/root/logs/rocketmqlogs就是问题所在
可以看到当前rocketmq客户端日志单个文件大小为1.1G,然后分片了7个
由于项目比较稳定半个月未部署,所以在默认路径中,rocketmq客户端日志追加到了7G
已知的是,项目中已经配置了自定义日志,自定义路径为/home/work/log/项目/rocketmq_client.log可以看到自定义路径的文件大小为0
很显然配置未生效
自定义客户端日志配置未生效
查看自定义客户端日志配置,分为两步
第一步,配置rocketmq.client.logUseSlf4j=true
启动参数 添加: -Drocketmq.client.logUseSlf4j=true 【推荐】
或者启动类添加:System.setProperty("rocketmq.client.logUseSlf4j","true")
第二步,配置logback日志配置
检查项目中的配置
第一步,配置在application.properties
第二步,配置在logback.xml
可以看到的是第一步配置貌似不匹配,修改第一步配置
方式1
启动参数 添加: -Drocketmq.client.logUseSlf4j=true 【推荐】
配置项目启动参数,这个一般在项目部署平台的配置,结果验证,默认路径中没有rocketmqlogs文件夹了
自定义路径文件的有内容了,进入查看日志正常,说明配置生效
方式2
在项目启动类main方法中第一行添加
System.setProperty("rocketmq.client.logUseSlf4j","true")
验证也通过,该方式不太优雅,建议使用方式1,直接平台配置无需部署代码
以上解决了rocketmq自定义客户端日志配置不生效的问题
总结
以下两点解决了磁盘使用率占用过大问题
- 在自定义配置中,配置了rollingPolicy滚动(归档)策略为
SizeAndTimeBasedRollingPolicy
:按时间和文件大小滚动 (归档),超出指定时间自动删除,且指定时间内的所有分片日志总大小超过指定大小的,自动删除最老的归档日志分片 - 当前自定义配置路径已经挂载出去了,走的是1T的空间
参考文档
rocketmq client 日志的问题处理方式_Java教程_服务器之家
【Logback】<appender>标签详解_柒杯红酒的博客-CSDN博客