根据 log4j2
用户指南,看起来只为一个类创建一个 Logger
对象。
如果我从代码中的任何位置调用静态方法 LogManager.getLogger("SomeClass")
,它应该返回对同一记录器对象的引用。
应用程序中具有上述代码行的多个线程最终是否使用相同的记录器对象?
最佳答案
LogManager.getLogger("SomeClass") 是一个静态调用,因此,在此基础上我会说是,如果您调用获取同一类的记录器,它将返回相同的记录器对象。
不同的线程不会有任何区别,直到它是同一个容器。
使用相同类名调用的所有线程将提供相同的记录器实例。直到并且除非您设置一个返回不同记录器(对象)的自定义记录器存储库。自定义记录器存储库意味着您可以操纵记录器对象的存储和返回方式。
我在理论上对此进行了测试。创建了2个单独的类。为这两个类创建了记录器。让传递给调用的类名保持相同。
调用记录器来打印它们的哈希值,结果是相同的。
关于java - Log4j2 环境中单个软件组件的 Logger 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33289999/