在调试中运行日志

2022-08-31 19:54:08

我最近从log4j切换到logback,我想知道是否有一种简单的方法可以在调试模式下运行logback,类似于log4j的属性。我需要看看它从哪里开始。log4j.debuglogback.xml

文档提到使用 a 来打印 logback 的内部状态,但这需要更改代码。StatusPrinter


答案 1

[编辑]

此问题已在 Logback 1.0.4 中修复。现在,您可以使用 来启用对登录设置的调试。-Dlogback.debug=true

- 旧答案 -

遗憾的是,无法通过 System 属性启用调试。您必须在 中使用 .请提交功能请求。<configuration debug="true">logback.xml


答案 2

我就是这样做的。我设置了一个名为“log.level”的系统属性,然后在logback.xml中引用它。

编辑:缺点是您必须始终设置“log.level”。我处理这个问题的方法是签入我的main方法并将其设置为INFO(如果尚未设置),请确保在首次记录调用之前执行此操作。然后,我可以在命令行上覆盖,并有一个合理的默认值。

以下是它在我的日志中的外观.xml:

<configuration>
    <logger name="com.mycompany.project" level="${log.level}" />
    <logger name="httpclient" level="WARN" />
    <logger name="org.apache" level="WARN" />
    <logger name="org.hibernate" level="WARN" />
    <logger name="org.hibernate.cfg.AnnotationBinder" level="WARN" />
    <logger name="org.hibernate.cfg.annotations" level="WARN" />
    <logger name="org.quartz" level="WARN" />
    <logger name="org.springframework" level="WARN" />

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-16thread] %-5level %-35.35logger{30} - %msg%n</pattern>
        </encoder>
    </appender>
    <root level="${log.level:-INFO}">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

推荐