exception(二)——异常打印

说起日志打印,首先想到的就是e.printStackTrace()这个方法。

然而在生产环境中,尽量不要使用此方法。生产中,e.printStackTrace()除了不断地刷控制台,其余并没有什么作用。而我们排查问题,看的是日志文件,所以最重要的应该是要把异常信息写入日志文件啊。

此外,e.printStackTrace()会一层一层的输出问题。比如A extends B,B extends C。那么当A中出现异常的时候,会依次打印C,B,A的异常之处,信息量很大。显然这是很耗性能的。

因此,建议异常输出,采用@Slf4j的形式。

log打印有info,debug,error和warn四个级别,其中info是默认级别。

@Slf4j
public class LoggerPrint {

    public void test2(){
        log.debug("debug");
        log.info("info");
        log.error("error");
        log.warn("warn");
    }

}

这里单独说说error的打印方式。log.error有很多重载方法,使用不同的方法,呈现出的效果也各不相同。看看下面的一段代码,执行后三者对应的效果如下所示:

@Test
public void logTest(){
    try{
        int i = 1/0;
    }catch (Exception e){
        log.error("程序执行异常1:" + e.getMessage());
        log.error("程序执行异常2:" + e);
        log.error("程序执行异常3:", e);
    }
}

可见,第三种方式打印了堆栈信息,最为详细。我们应尽量在日志文件中,以这种方式输出异常。 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值