如何设置log4j2 Mbean的contextName

How to set contextName of log4j2 Mbean

在使用 jvisualvm 访问 log4j2 Mbean 时,我看到 log4j2 包内的类型 (contextName) 是一个数字(对我来说是 1482868390)。由于在查询中指定 Object 时以 'type' 形式出现,因此我想将其指定为我更喜欢的更易识别的名称。有没有办法在 xml 配置中设置上下文名称。 我认为有一种方法可以为 Web 应用程序做到这一点,但我想为独立的 java 应用程序设置它。

是的,这是可能的,但不在配置中。您可以通过子类化 Log4j 的 ContextSelectors 之一并覆盖其 defaultContextName() 方法来实现此目的。

然后您通过使用系统 属性 -DLog4jContextSelector=com.yourpackage.YourContextSelector 启动您的应用程序来告诉 Log4j 使用您的 ContextSelector。

如果您要使所有记录器异步,则需要继承 AsyncLoggerContextSelector, otherwise ClassLoaderContextSelector