Log4j2 环境中单个软件组件的记录器对象

Logger object for a single software component in the Log4j2 environment

根据 log4j2 用户指南,似乎只为 class.

创建了一个 Logger 对象

如果我从代码中的任何地方调用静态方法 LogManager.getLogger("SomeClass"),它应该返回对同一个记录器对象的引用。

具有上述代码行的应用程序中的多个线程是否最终使用相同的记录器对象?

LogManager.getLogger("SomeClass") 是一个静态调用,因此,在此基础上我会说是如果您调用相同的 class 获取记录器,它将 return 相同的记录器对象。

不同的线程不会有任何区别,直到它是同一个容器。

所有使用相同 Class 名称调用的线程将提供相同的记录器实例。直到并且除非您设置一个自定义记录器存储库,其中 return 是一个不同的记录器(对象)。自定义记录器存储库意味着您可以操纵记录器对象的存储方式和 returned.

我在理论上测试过这个。创建了 2 个独立的 classes。为 classes 创建了记录器。将传递给调用的 class 名称留给两者相同。

调用记录器打印他们的散列,结果是相同的。