log4j 有一个属性 ,log4j.debug
它将帮助用户指示实际使用哪个配置文件来配置日志记录系统。
我还没有找到任何与(否则更好的)Logback 日志框架等效的东西。有什么方法可以在运行时打印(用于诊断目的),哪个配置文件 Logback 用于引导自身?
[编辑]澄清一下,理想情况下,我想要一个不需要我修改配置文件本身的解决方案(例如,因为组装不当的第三方 JAR 可能会被错误地拾取,并且在我的 logback 配置之前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
加载的配置文件。
您可以debug="true"
在logback.xml
您控制的文件中进行设置,如下所示:
<configuration debug="true">
(...)
</configuration
并确保 logback 将使用该文件,并在启动程序时添加以下 VM 参数:
-Dlogback.configurationFile=/path/to/yourlogback.xml
这并不能真正回答您的问题,而是为您提供解决方案。
不是很科学,但如果您只想快速确认,它会起作用。
我只是更改了日志条目模式并观察它是否在我的控制台/日志文件中发生了变化。