在Debug中运行Logback

dog*_*ane 35 java logging logback

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

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

Aar*_*lla 54

[编辑]

这已在Logback 1.0.4中修复.您现在可以使用它-Dlogback.debug=true来启用对回调设置的调试.

- 旧答案 -

不幸的是,没有办法通过System属性启用调试.你必须使用<configuration debug="true">logback.xml.请提交功能请求.

  • 功能是"固定的",并在logback 1.0.4中. (4认同)
  • 它已经完成:http://jira.qos.ch/browse/LBCLASSIC-225请为它投票! (2认同)
  • 为了绝对清楚,您现在可以使用系统属性启用Logback调试,例如`-Dlogback.debug = true`.通过http://gordondickens.com/wordpress/2013/07/18/logback-config-showing-debug-level/. (2认同)

Dav*_*sel 7

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

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

这是它在我的 logback.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>
Run Code Online (Sandbox Code Playgroud)

  • 如果未定义,您可以在 logback.xml 上为该属性指定默认值,如下所示: `&lt;root level="${log.level:-info}"&gt;` 这样您就不需要设置它如果未设置,则在 main 方法上。 (10认同)