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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王晓东 初级黑马   /  2012-6-6 15:48  /  1437 人查看  /  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 个回复

正序浏览
每个 Logger 都跟踪一个“父”Logger,也就是 Logger 名称空间中与其最近的现有祖先。

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

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

评分

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

查看全部评分

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

希望楼主满意
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马