gpt4 book ai didi

logback - 无法使用 Logback 记录未捕获的异常

转载 作者:行者123 更新时间:2023-12-02 10:56:09 34 4
gpt4 key购买 nike

我用各种框架(jsf、Spring、Hibernate)编写了一个网络应用程序,我的记录器库是 Logback 和 slf4j。

目前我无法在日志文件中显示未捕获的异常(例如 NullPointers)。

这是我的 logBack.xml

<configuration debug="true">
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${CATALINA_HOME}/logs/jsfDemo.log</file>

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>jsfDemo.%d{yyyy-MM-dd}.log.zip</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>

<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>

<root level="DEBUG">
<appender-ref ref="FILE" />
</root>

</configuration>

当我使用 uc=null 执行这几行代码时

public void nullPointerMethod(UserCredential uc){
LOG.debug(">>login(uc)");

if(uc == null){
throw new NullPointerException();
}else{
//do something
}

LOG.debug("<<login(uc)");
}

在日志文件中我只看到

>>login(uc)

但我想查看 NullPointer 的 stackTrace。怎么了?

最佳答案

您可以使用SLF4JBridgeHandler :

Essentially, the idea is to install on the root logger an instance of SLF4JBridgeHandler as the sole JUL handler in the system. Subsequently, the SLF4JBridgeHandler instance will redirect all JUL log records are redirected to the SLF4J API based

基本上你只需要在主方法中调用SLF4JBridgeHandler.install();并以这种方式配置logback:

<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
<resetJUL>true</resetJUL>
</contextListener>

关于logback - 无法使用 Logback 记录未捕获的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23246709/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com