在调试中运行 Logback

新手上路,请多包涵

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

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

原文由 dogbane 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 465
2 个回答

[编辑]

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

-- 旧答案 –

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

原文由 Aaron Digulla 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

原文由 David Roussel 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题