Logger.getLogger(className)和LogFactory.getLog(className)之间的区别?

时间:2012-04-20 12:58:02

标签: java logging log4j

我知道它的包差异

1)org.apache.log4j.Logger logger = Logger.getLogger(clazz);

2)org.apache.commons.logging.Log log = LogFactory.getLog(clazz);

第一个使用log4j的记录器,第二个使用commons.logging。我们有一个庞大的项目,在某些类中,使用log4j配置记录器,在某些情况下使用commons.logging配置记录器。

我确实找到了一个log4j属性文件。commons.logging是否有类似的属性文件?我在哪里配置commons-logging?我无法看到commons-logging生成的日志。

感谢任何帮助。

1 个答案:

答案 0 :(得分:10)

是的,commons-logging是一个Facade API,它假设从底层日志框架中抽象出来(实际上可以在java.util.logging之间进行选择),这样你就可以从一个到另一个没有触及代码 - 只需切换CLASSPATH上可用的库。

不幸的是,由于一些设计错误,它在复杂的类加载环境(例如应用程序服务器)方面存在问题。目前它已被有效取代。

在你的情况下,我建议坚持使用一个API - Log4J或commons-logging,即使commons-logging将(很可能)委托给log4J。您也可以迁移到使用SLF4J并安装桥接API,但这稍微提高一些。