关于log4j使用常识的一个问题求解。
看了很多项目,在类中使用log4j记录日志,都会发现在本类中定义了一个日志记录器,如下:
Java code
private static final Logger log=Logger.getLogger(Logj4jTest.class);
private static final Logger log=Logger.getLogger(Logj4jTest.class);
private static final Logger log2=Logger.getLogger(Logj4jTest2.class);
这两个日志记录器对象引用是不一样的,意味着每个类这样写,创建的日志记录器对象就特别多了。
使用到log4j的类都这样写,而日志的输出目的地都是一样的。
所以我有疑问,为什么不在一个类中获得这么一个日志记录器对象,以后其它类需要日志记录的时候,就从这个类获得日志记录器来记录日志呢?
------解决方案--------------------效果是一样的,但用起来和维护起来麻烦:
你这个log统一的类维护起来麻烦,每写一个新类,都要在你这个类里面加一个log属性
用你这个log的类还要到你这里面去找,哪个log变量对应我这个类
------解决方案--------------------
1。LZ的意思地是建一个静态的log类,以后的类直接调用。省得每次都直接定义了。貌似确实能简单些。
2。这样增加类之间的耦合。
3。但是如果某个类的比较特殊,需要一个特别的log,你的代码修改的比较多。不好维护。