也说一种普遍错误使用的LOG方式

现在很多开源项目在使用LOG的时候做了不好的示范--在基类中实例化的方式使用LOG,而不是静态变量。

例如:

class Base  {
     private final static Log LOG = LogFactory.getLog(this.getClass());
}

class Derived  {
    public void foo() {
           if (LOG.isDebugEnabled()) LOG.debug("foo");
    }
}

这种用法,当类被继承的时候,LOG就完全乱了。spring、struts都有这样的问题。

正确的使用方式应该是直接静态化声明LOG。

例如:

class DerivedA  {
     private final static Log LOG = LogFactory.getLog(DerivedA.class);
}

posted on 2009-01-05 10:49 温少 阅读(4883) 评论(2) 编辑 收藏

评论

#1楼  回复 引用 查看   

为什么呢,不解
2009-01-05 13:41 | 挖沙啦      

#2楼[楼主]  回复 引用 查看   

@挖沙啦
在我博客的java分站上有详细的讨论
http://www.blogjava.net/jobs/archive/2009/01/05/249864.html
2009-01-05 14:50 | 温少