50

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

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

4

5 回答 5

72

[编辑]

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

-- 旧答案 --

不幸的是,无法通过系统属性启用调试。您必须<configuration debug="true">logback.xml. 请提交功能请求。

于 2010-09-27T08:18:07.163 回答
4

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

编辑:缺点是您必须始终设置“log.level”。我处理这个问题的方法是检查我的主要方法并将其设置为 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>
于 2011-05-04T13:53:55.627 回答
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参数并重新启动您的应用程序。

来源:第 3 章:Logback 配置

于 2017-05-04T18:00:47.430 回答
1

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

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

请参阅:Logback 手册

于 2017-11-01T09:36:50.753 回答
-1

在 Eclipse 中,您可以有多个运行配置。打开你的主要课程。转到 Eclipse 工具栏上的 Debug 下拉菜单,然后选择 Debug 配置。单击左上角的新启动配置图标。给你的启动配置一个更好的名字。单击名称下的参数选项卡,然后输入 -Dlog.level=debug 或任何您想要的。单击关闭或调试

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

于 2016-09-28T14:55:35.227 回答