我正在尝试使用此代码获取所有记录器的列表
LoggerContext logContext = LoggerContext.getContext(false);
Configuration config = logContext.getConfiguration();
writeLoggers(config.getLoggers().values(), response);
下面的部分似乎并没有返回所有记录器,它返回的很少。我在列表中有600多位记录员。
config.getLoggers().values()
当我在下面的 logContext getLoggers()方法中使用时,它将返回所有loggers类,所以我想知道在log4j2中获取记录器的正确方法是什么, 配置 getLoggers()方法似乎不适用于我。对我来说,问题是一个正在返回类型为 Logger 的映射,另一个是 LoggerConfig 。我的整个代码都使用LoggerConfig,这就是为什么我想使用 config.getLoggers()方法
的原因logContext.getLoggers()
答案 0 :(得分:1)
我建议您查看http://logging.apache.org/log4j/2.x/manual/architecture.html。与其他日志记录框架不同,Log4J将日志记录配置与应用程序获取的Logger分开。因此,当您从配置中请求记录器时,将获得LoggerConfig对象,通常只有少数几个。如果要使用记录程序列表,则要从LoggerContext获取记录程序。请注意,不建议直接更新Loggers。您应该改为更新配置,然后调用LoggerContext的updateLoggers方法来传播您的更改。