logback日志级别动态切换的终极方案(Java ASM使用)

logback日志级别动态切换的终极方案(Java ASM使用)

背景

一切皆有因果,所有事情,都有事件驱动。本方案的日志级别切换是由这样的背景下产生的:

  • 单个生产环境上,有几百近千个微服务
  • 日志级别切换不重启服务,要求即时生效果
  • 由业务开发人员去修改代码或增加相关依赖配置等涉及面广,推动进度慢
  • 后期动态实时过滤垃圾日志,减少io和磁盘空间成本

logback简介

在跟敌人发起战争之前,只有先发解敌方的情况,才能做到百战百胜。要想对logback的日志级别做动态切换,首先至少对logback做个初步的了解、和看看它有没有提供现成的实现方案。下面简单介绍一下logback跟这次需求有关的内容。

logback是java的日志开源组件,是log4j创始人写的,目前主要分为3个模块

  1. logback-core:核心代码模块
  2. logback-classic:log4j的一个改良版本,同时实现了slf4j的接口
  3. logback-access:访问模块与Servlet容器集成提供通过Http来访问日志的功能
  4. ContextInitializer类是logback自动配置流程的逻辑实现
  5. 日志级别由Logger维护和使用。其成员变量Level正是由Logger维护
  6. Logger中有filterAndLog_0_Or3Plus、filterAndLog_1、filterAndLog_2三个不同参数的过滤日志输出方法
  7. Logger中的setLevel就是对日志级别的维护
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » logback日志级别动态切换的终极方案(Java ASM使用)