参考:https://www.iteye.com/blog/liuzhijun-1746571
Log4J的三个组件:
Logger:日志记录器,负责收集处理日志记录 (如何处理日志)
Appender:日志输出目的地,负责日志的输出 (输出到什么 地方)
Layout:日志格式化,负责对输出的日志格式化(以什么形式展现)
1、Logger:
logger可以有选择的启动和禁用日志的输出,我们经常会在各种框架中看到如:
private static final Logger log = LoggerFactory.getLogger(XX.class);
log就代表了一个Logger实例,他的name就是类“XX”的full quailied name(类的全限定名),按照上图所述,这个log就可以指定多个appender和layout。Logger的名字大小写敏感,其命名有继承机制:例如:name为org.apache.commons的logger会继承name为org.apache的logger。
Log4J中有一个特殊的logger叫做“root”,他是所有logger的根,也就意味着其他所有的logger都会直接或者间接地继承自root。root logger可以用Logger.getRootLogger()方法获取,但是不能通过Logger.getLogger(“root”)获得。可以代码测试验证:
Logger root = Logger.getRootLogger();
Logger log = Logger.getLogger("root");
System.out.println(log==root); //false 说明root无法通过name获取
Logger log2 = Logger.getLogger("root");
System.out.println(log==log2); //true,说明一个name唯一对应一个logger
未完待续。。。