如何确定Logback实际使用的日志配置源?

log4j有一个属性log4j.debug ,它将有助于向用户提供实际用于配置日志记录系统的配置文件的指示。

我无法找到与(否则更高级)Logback日志框架等效的东西。 有没有办法在运行时打印(用于诊断目的),哪个配置文件Logback用于自举?

[编辑]为了澄清,我理想地喜欢一个不需要我修改配置文件本身的解决方案(例如,由于错误组装的第三方JAR可能被错误地拾取,并且在我的回溯配置之前XML)。

您可以设置Java系统属性以输出Logback调试信息:

 java -Dlogback.statusListenerClass=ch.qos.logback.core.status.OnConsoleStatusListener 

自动状态打印的Logback文档(非常底部提到强制状态输出)和logback.statusListenerClass属性进一步解释了这一点:

在没有状态消息的情况下,跟踪流氓logback.xml配置文件可能很困难,尤其是在无法轻松修改应用程序源的生产环境中。 为了帮助识别恶意配置文件的位置,可以通过“logback.statusListenerClass”系统属性(在下面定义)设置StatusListener以强制输出状态消息。 “logback.statusListenerClass”系统属性也可用于静音在出错时自动生成的输出。

如果您想深入了解Logback ,可以执行以下操作

 import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ch.qos.logback.classic.LoggerContext; import ch.qos.logback.core.joran.util.ConfigurationWatchListUtil; public class Main { private static final Logger logger = LoggerFactory.getLogger(Main.class); public static void main(String[] args) throws Exception { LoggerContext loggerContext = ((ch.qos.logback.classic.Logger)logger).getLoggerContext(); URL mainURL = ConfigurationWatchListUtil.getMainWatchURL(loggerContext); System.out.println(mainURL); // or even logger.info("Logback used '{}' as the configuration file.", mainURL); } } 

它将打印已加载配置文件的URL

你可以在你控制的loback.xml文件中设置debug =“true”

  (...)  

并确保在启动程序时,logback将使用该文件添加以下VM参数:

 -Dlogback.configurationFile=/path/to/yourlogback.xml 

这并不能真正回答您的问题,而是为您提供解决方案。

不是很科学,但如果您只想快速确认它就有效。

我只是更改了日志条目模式,并观察它是否在我的控制台/日志文件中发生了变化。