我最近从 log4j 切换到 logback,想知道是否有一种简单的方法可以在调试模式下运行 logback,类似于 log4j 的log4j.debug
属性。我需要看看它是从哪里接我logback.xml
的。
文档提到使用 aStatusPrinter
来打印 logback 的内部状态,但这需要更改代码。
[编辑]
这已在 Logback 1.0.4 中修复。您现在可以使用-Dlogback.debug=true
来启用 logback 设置的调试。
-- 旧答案 --
不幸的是,无法通过系统属性启用调试。您必须<configuration debug="true">
在logback.xml
. 请提交功能请求。
我就是这样做的。我设置了一个名为“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>
我无法使用选择的答案使其工作。但是,以下工作:
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
参数并重新启动您的应用程序。
您可以通过系统属性设置状态监听器类:
java -Dlogback.statusListenerClass=ch.qos.logback.core.status.OnConsoleStatusListener ...
请参阅:Logback 手册
在 Eclipse 中,您可以有多个运行配置。打开你的主要课程。转到 Eclipse 工具栏上的 Debug 下拉菜单,然后选择 Debug 配置。单击左上角的新启动配置图标。给你的启动配置一个更好的名字。单击名称下的参数选项卡,然后输入 -Dlog.level=debug 或任何您想要的。单击关闭或调试
例如,您可以再次执行此操作并指定 -Dlog.level=warn。