A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王晓东 初级黑马   /  2012-6-6 15:48  /  1390 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在类中使用log4j记录日志,都会在本类中定义了一个日志记录器,如下:
  1. 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的类都这样写,而日志的输出目的地都是一样的。

所以我有疑问,为什么不在一个类中获得这么一个日志记录器对象,以后其它类需要日志记录的时候,就从这个类获得日志记录器来记录日志呢?

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

2 个回复

倒序浏览
1. 楼主的意思地是建一个静态的log类,以后的类直接调用。省得每次都直接定义了。貌似确实能简单些。
2. 这样增加类之间的耦合。
3. 但是如果某个类的比较特殊,需要一个特别的log,你的代码修改的比较多。不好维护。

希望楼主满意
回复 使用道具 举报
每个 Logger 都跟踪一个“父”Logger,也就是 Logger 名称空间中与其最近的现有祖先。

每个 Logger 都有一个与其相关的 "Level"。这反映了此 logger 所关心的最低 Level。如果将 Logger 的级别设置为 null,那么它的有效级别继承自父 Logger,这可以通过其父 Logger 一直沿树向上递归得到。

这是API上面的原话,是一个树形结构,这样的话方便管理,对于一个项目比较大了,用一个logger来管理也是不现实的

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马