Log4j源码分析

68 阅读1分钟

Log4j源码分析

类图

image.png

核心抽象

  1. Logger 用于对日志记录行为的抽象,提供记录不同级别日志的统一接口

  1. Category 日志的主要逻辑

  • name:Logger对应的名称
  • level:日志级别
  • parent:Logger的父亲(继承关系,如果子Logger没有指定Appender默认使用父亲的)
  • FQCN:全限名称指定了当前类
  • resourceBundle:国际化相关
  • repository:所属的容器,
  • aai:相关的Appender
  • additve:这个变量就是控制是否使用父类的Appender

  1. AppenderAttachable 添加Appender

  • 关联Logger里的aai
  1. LogManager

  • 负责初始化读取日志配置文件,加载到LoggerRepository(Hierarchy)缓存中

Hashtable ht = new Hashtable();

  • 获取日志对象Logger,维护parent log等

public Logger getLogger(String name, LoggerFactory factory)

private final void updateParents(Logger cat)

  1. AppenderSkeleton 日志Appender自定义扩展类

初始化过程

image.png

日志打印

image.png

参考:

日志框架Log4j源码解析(1)

Log4j源代码学习 - E_star - 博客园