最近在读log4j的源码,源码不大,但是初次阅读源码,还是会不断地出现疑惑。首先花了一些时间弄清楚了log4j的整体流程,个各类之间的关系。
操作流程如下:
下面说说最近发现用到的几个设计模式:
1、Factory 模式
Logger logger= Logger.getLogger(Test.class.getPackage().getName());
即客户端通过调用Logger的getLogger方法获得Logger,Logger则调用LoggerManager方法获得Logger,
而loggerManager则通过调用LoggerRepository的getLogger方法获得Logger,如果logger不在LoggerRepository中,
则用LoggerFactory的makeNewLoggerInstance创建一个Logger。这是一个工厂模式。
2、Template method
AppenderSelecton就是用到了Template Method