为什么我在使用 Logger.error( "msg" ,e) 时没有打印出堆栈跟踪?


try{
……
}catch(Exception e){
……
logger.error(String.format("deliverTask error:%s",e.getMessage()),e);
}

日志输出为

deliverTask error:null
try{
……
}catch(Exception e){
……
logger.error(String.format("deliverTask error:%s",e.toString()),e);
}

日志输出为

deliverTask error:java.lang.NullPointerException

为什么会发生这种情况?为什么不打印异常详细信息?我必须做些什么才能获得堆栈跟踪信息?

日志框架:org.slf4j 1.7.26logback 1.2.3

我没有发现代码结构有任何问题,我尝试了类似的例子,它正在打印异常详细信息。

import lombok.extern.slf4j.Slf4j;
@Slf4j
public class LoggerExample {
public static void main(String[] args) {
int a = 5;
try{
a = 5/0;
}catch(Exception e){
log.error(String.format("Something went wrong:%s",e.getMessage()),e);
}
}
}

输出:-

main] ERROR test.LoggerExample - Something went wrong:/ by zero
java.lang.ArithmeticException: / by zero
at test.LoggerExample.main(LoggerExample.java:13)

您可能需要检查记录器配置。我刚刚使用了lombok,那里的配置非常简单,你只需要在pom.xml中添加下面的片段,并用@Log或它的变体进行注释,我使用了@Slf4j。

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>

最新更新