在Debug中运行Logback

时间:2010-09-27 08:12:26

标签: java logging logback

我最近从log4j切换到logback,我想知道是否有一种简单的方法在调试模式下运行logback,类似于log4j的log4j.debug属性。我需要查看它从logback.xml获取的位置。

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

5 个答案:

答案 0 :(得分:49)

<强> [编辑]

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

- 旧答案 -

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

答案 1 :(得分:4)

我就是这样做的。我设置了一个名为'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>

答案 2 :(得分:1)

我无法使用所选答案使其工作。但是,以下工作:

java -Dlogback.configurationFile=/path/to/config-debug.xml com.domain.Main

只需在服务器上的某处添加一个文件(本例中为config-debug.xml),并在需要调试时将其保留在那里。如下所示。

<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- encoders are assigned the type
             ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
        <encoder>
            <pattern>%d{dd-MMM-yyyy HH:mm:ss.SSS} %-5level [%thread] %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="debug">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

使用前面提到的-D参数运行您的应用程序。

当事情恢复正常时,请删除-D参数并重新启动应用程序。

来源:Chapter 3: Logback configuration

答案 3 :(得分:1)

您可以通过系统属性设置状态监听器类:

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

请参阅:Logback manual

答案 4 :(得分:-1)

在eclipse中,您可以拥有多个运行配置。打开你的主课。转到eclipse工具栏上的Debug下拉列表,然后选择Debug configurations。单击左上角的“新建启动配置”图标。为您的启动配置提供更好的名称。单击名称下的Arguments选项卡,然后输入-Dlog.level = debug或您想要的任何内容。单击关闭或调试

您可以再次执行此操作并指定-Dlog.level = warn例如。