保存成功
保存失败,请重试
提交成功

Logback 生产级配置框架详解与最佳实践

作者/分享人:lemonx
现任项目总监兼任技术架构师,曾任微服务基础中间件项目经理和技术解决方案成员。擅长高并发、高可用、微服务网关、流量治理、微服务建设和技术解决方案等领域。

日志是非常关键的组件,若配置不当,则会产生:大量输出意义不大的日志、性能影响很严重、频繁 IO、很难定位问题。我们常使用的日志框架组合主要包括:SLF4J + Logback 和 SLF4J+Log4j 2.x。这里主要介绍 Logback 配置框架,并实现以下生产级功能:

  1. 周期性刷新 Logback 配置文件
  2. 异步输出日志至本地文件
  3. 输出 JSON 格式日志
  4. 输出 Java 上下文自定义参数(链路追踪 ID) 5.实现按日滚动日志文件
  5. 实现按单个文件大小滚动日志文件
  6. 实现按日志保留天数滚动日志文件
  7. 实现按日志总大小滚动日志文件
  8. 实现日志“零丢失”记录文件
  9. 实现从 application.yml 中读取参数
  10. 实现性能优化后的日志配置文件
  11. 实现分不同文件记录日志内容
已有188人预订
预订达标
文章出炉
     
10月29日
11月14日
本场 Chat 文章已出炉,购买后即可阅读文章并获得一张lemonx的读者圈Pass
请务必添加GitChat服务号以查看活动进度及获取活动通知。
查看文章评论/提问
尼古拉斯.小王 💯6 天前
咨询个问题,Logback日志配置文件如spring-logback.xml是放在服务代码内部的,在微服务下能否将spring-logback.xml内容抽离到配置中心吗?让每个服务都监听配置中心里的日志配置信息,这样运维人员可以在配置中心中动态修改日志打印策略等。楼主有实践过这块嘛,如有的话可以分享下嘛?
尼古拉斯.小王回复 2 天前
我自己实践没成功,可能是本身局限太大造成的。
尼古拉斯.小王回复 2 天前
多谢坐着耐心讲解,我描述的可能不太清楚,我再说一下吧,比如我微服务体系下A服务有四个服务节点,我想把这四个节点都使用同一份日志配置文件,这样如果要改配置就直接改一份就行了,不用登录到四个节点分别去改日志配置文件。目的有两个: 1.公用一份配置文件,是为了减少运维人员多次做重复操作。 2.放在配置中心,是为了可以在nacos里面通过管理界面来修改日志配置内容,这里面还需要支持配置中心修改日志配置后,A服务能实时动态响应日志策略。 上面两点是我这边比较关注的,所以想借鉴和吸取下作者的实践思想和方式。
 6 天前
没有按你说的思路实践过,不过可以去尝试尝试,或许能成功。 我给个建议,你提这个问题,说明你的打包部署方式应该是把项目打成一个大的jar包,然后用java命令启动项目,同时就会把相关的配置都打包进jar中了,所以才出现没办法修改日志配置文件的问题。 但微服务的打包方式我更建议使用jsw等各类MAVEN插件来定制更灵活的个性化运行包,就能将配置从jar中剥离(会自动生成bin、conf、log和lib等目录),同时也会自动生成跨平台运维脚本(Linux、Mac、Windows等)。当你想修改配置时,则直接在配置目录中进行修改即可。 我的下一篇文章就会介绍这种打包方式,可以去关注一下:基于 JSW 的 Java 微服务打包(非 Spring)。
harbor7 天前
有demo吗?
 6 天前
没有demo,直接复制最佳实践中的配置内容至你自己的项目中,然后修改包路径即可使用
你可能还喜欢
机器学习必备的数学知识,一次学会
白朔天
微服务架构深度解析与最佳实践
kimmking
程序员如何专注和管理时间
程序员的三门课
如何设计一个注册中心
star
从 Vue 3 源码切入,全面掌握前端编译原理
修言
高效学习的途径
程序员的三门课
微信扫描登录
关注提示×
扫码关注公众号,获得 Chat 最新进展通知!
入群与作者交流×
扫码后回复关键字 入群
Chat·作者交流群
入群码
该二维码永久有效