Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在调试中运行Logback_Java_Logging_Logback - Fatal编程技术网

Java 在调试中运行Logback

Java 在调试中运行Logback,java,logging,logback,Java,Logging,Logback,我最近从log4j切换到了logback,我想知道是否有一种简单的方法可以在调试模式下运行logback,类似于log4j的log4j.debug属性。我需要查看它从哪里获取我的logback.xml 文档提到使用状态打印机打印回登录的内部状态,但这需要更改代码。[EDIT] 这已在Logback 1.0.4中修复。您现在可以使用-Dlogback.debug=true来启用logback设置的调试 --旧答案-- 遗憾的是,无法通过系统属性启用调试。您必须在logback.xml中使用。请提交

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


文档提到使用状态打印机打印回登录的内部状态,但这需要更改代码。

[EDIT]

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

--旧答案--


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

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

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

下面是它在my logback.xml中的外观:


%d{yyyy-MM-dd HH:MM:ss.SSS}[%-16thread]-5级别%-35.35logger{30}-%msg%n

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


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

我无法使用所选答案使其正常工作。然而,以下方面起了作用:

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>


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

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

请参阅:

如果未定义属性,您可以在logback.xml上为该属性指定一个默认值,如下所示:
这样,如果未设置属性,则无需在main方法上进行设置。谢谢,我错过了这一点。现在你提到了,我可以在文档中看到,谢谢你的评论。在Eclipse中,我无法在运行配置中设置环境变量,以在运行mvn站点时关闭日志记录,但在Eclipse中运行单个测试时具有默认的调试级别。谢谢。如果你喜欢我的答案,请投票表决。这就是这个网站的工作原理。:-)此功能是“固定”的,并且在logback 1.0.4中。为了绝对清楚,现在可以使用系统属性启用logback调试,例如
-Dlogback.debug=true
。Via…,但如果您使用Groovy配置,则当前无法启用此功能:。