在error日志打印异常

Posted expiator

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在error日志打印异常相关的知识,希望对你有一定的参考价值。

在日志中打印异常,经常会看到以下的写法:

logger.error(e.getMessage());

或者是:

e.printStackTrace();

这两种其实都不太好。
e.getMessage只会打印出异常的类型,但是不会显示出错的异常方法堆栈,无法在日志中找出错误代码
而e.printStackTrace();则是将异常打印到控制台,并不是打印到error日志中。

解决方法

看logger.error源码,可以发现:

public void error(String msg, Throwable t);

public void error(String msg);

如果想在error日志中打印异常,可以使用第一种。

    logger.error(“xxx出错”,e);   //第二个参数是Exception

注意,方法有两个参数,通过逗号隔开,而不是用加号连接。
也就是说,并不是logger.error(“xxx出错:”+e) 或 logger.error(e) 或logger.error(e.getMessage());

示例如下:

try

catch(Exception e) 
        logger.error(“xxx出错:”,e) 


参考资料:
https://blog.csdn.net/heweimingming/article/details/76423186

以上是关于在error日志打印异常的主要内容,如果未能解决你的问题,请参考以下文章

jvm不打印异常栈

logback info/error打印在同一文件

Logback异常日志监控告警

log4j 不打印异常堆栈

springboot aop + logback + 统一异常处理 打印日志

scarpy设置日志打印级别和存储位置