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>