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

2022-09-02 13:56:35

我知道这是一个包装差异

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

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

第一个通过使用记录器,第二个使用.我们有一个巨大的项目,在某些类中,记录器是使用来配置的,在某些情况下,它是.log4jcommons.logginglog4jcommons.logging

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

任何帮助是值得赞赏的。


答案 1

是的,commons-logging是一个门面API,它假设将您从底层日志记录框架中抽象出来(在实践中,可以在和)之间进行选择,以便您可以在不接触代码的情况下从一个切换到另一个 - 只需切换CLASSPATH上可用的库即可。java.util.logging

不幸的是,由于一些设计错误,它在复杂的类加载环境(如应用程序服务器)中遇到了问题。目前,它实际上已被取代。

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


答案 2

推荐