# xlogger **Repository Path**: GavanStart/xlogger ## Basic Information - **Project Name**: xlogger - **Description**: 动态修改日志级别的工具库 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2024-07-05 - **Last Updated**: 2024-07-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # logger-tools 日志级别动态调整工具 # 初衷(背景) 在实际项目中,随着业务复杂度不断增加,生产环境出现任何小的变动,都会产生巨大影响。每一次客诉或者报警都需要开发人员快速定位问题,而有时通过review代码并不能快速响应,或者是有些问题在开发和测试环境不容易复现,甚至无法复现。 为了提高问题定位的效率,最有效的方式就是通过日志。如果日志打印的非常全,那对于定位排查有着相当大的帮助,但是这样也会带来日志量的暴涨,影响系统性能,在极端情况下,可能会宕机。 在这种背景或者说初衷下,写了简单的小工具,可以在解决线上问题时,实时调整生产环境日志级别,帮助开发们提高排查效率~~ # 能解决的问题
  1. 日志降级
  2. 比如业务依赖比较复杂,在某些特殊时段,下游服务故障。会产生大量错误日志,导致IO升高,CPU占用严重。从代码级别的修改到上线耗时长,在这种短时间内打印出海量错误日志,会快速耗尽buffer区内存,造成服务整体性能下降,严重时,还未来得及修复问题,日志就已经拖垮服务,造成宕机的情况下,可以通过这个工具, 快速调整日志级别。降低日志输出,达到日志降级的目的。给开发者争取充裕的问题修复时间。
  3. 线上调试
  4. 使用此工具,可以实时动态调整线上日志级别。减轻服务器负载压力,遇到问题需要排查时,可以临时降级,快速精准得到日志信息。
# 特点
  1. 低侵入
  2. 直接引入jar包,业务耦合度低
  3. 主流日志框架支持
  4. 兼容Log4j、Log4j2和Logback主流日志框架
  5. 可定制化处理
  6. 可以根据需求,做定制化处理,使用方式见下文
# 使用帮助
  1. 引入依赖
  2. 通过ChangeLogLevelProcess.process方法进行日志级别修改操作
  3. 推荐将该bean交给ioc容器管理。
    参数说明:
    1、String 类型入参,参数参照。。。,将所有logger统一设定为某个级别
    2、List 类型入参,指定logger设定级别
    3、null 空参,默认设置所有logger为默认级别(INFO),如果需要修改默认级别,可在ioc注入时修改defaultLevel的值,值参照 LogLevelConstant
  4. 可定制化处理
  5. 若需要其他定制化操作,请新建类继承AbstractLoggerProcess并实现其抽象方法
# 扩展 目前提供的仅是最底层的操作,在生产环境中使用,需要配合对应的客户端(web控制台或某些client)。如果是分布式应用,需要配合zookeeper这类工具对所有节点进行操作。在安全性方面,建议记录所有操作记录,并引入权限验证,确保开发者只能修改自己所负责的系统,同时把操作内容实时通知给所有相关负责人,避免误操作。