Log4j源码分析
类图
核心抽象
-
Logger 用于对日志记录行为的抽象,提供记录不同级别日志的统一接口
-
Category 日志的主要逻辑
- name:Logger对应的名称
- level:日志级别
- parent:Logger的父亲(继承关系,如果子Logger没有指定Appender默认使用父亲的)
- FQCN:全限名称指定了当前类
- resourceBundle:国际化相关
- repository:所属的容器,
- aai:相关的Appender
- additve:这个变量就是控制是否使用父类的Appender
-
AppenderAttachable 添加Appender
- 关联Logger里的aai
-
LogManager
- 负责初始化读取日志配置文件,加载到LoggerRepository(Hierarchy)缓存中
Hashtable ht = new Hashtable();
- 获取日志对象Logger,维护parent log等
public Logger getLogger(String name, LoggerFactory factory)
private final void updateParents(Logger cat)
-
AppenderSkeleton 日志Appender自定义扩展类
初始化过程
日志打印
参考: