19 05 2023

SpringBoot日志处理
一.安装Lombok
二.使用
三.log填坑
四.控制台不打印堆栈信息
一.安装Lombok
使用idea下载Lombok插件
File—>Setting----->plungin

在这里插入图片描述

在这里插入图片描述
搜索Lombok插件下载,安装好后需要重启idea。

二.使用
如果想使用log.info等等时,先在类上面加个注解@Slf4j,然后就可以使用log函数了。

在这里插入图片描述

看起来十分简单,但是这仅仅是开始,往下走。

三.log填坑
比如这个controller层,进入时我想记录下参数,这很平常吧,我刚开始是这样做的,

@ApiOperation(value = “测试异常机制”)

@GetMapping(value = "/testError", produces = "application/json;charset=UTF-8")
public ResponseData testError(String key) {
    log.info("TestController testError", key);
    ResponseData responseData = new ResponseData<>();
    try {
        responseData.setData(testService.testError(key));
    } catch (Exception e) {
        log.error("TestController testError", e.getMessage(),e);
        responseData.setMessage(e.getMessage());
        responseData.setSuccess(false);
    }
    return responseData;
}

这时候用的是log.info,因为此时不会有错误嘛,只需要打印下信息就好了,我们看看info里面的方法。

在这里插入图片描述
看起来很合理嘛,按照预期的结果,如果我传入参数的key值为yyyyyy,打印出来的内容应该是这样的:
TestController testError yyyyyy,但是实际上打印结果却是这样的。

在这里插入图片描述

根本没有把参数打印出来。
把截图放出来,可以看到Intelij Idea将此处标记为警告了,鼠标放上去会提示警告信息,意思大概是说参数个数对应不上。平时我都不在这些警告信息,嘿嘿,这下原来警告信息也不能忽略。

在这里插入图片描述

原来这玩意和占位符有关,类似MyBatis的#{}占位符,直接上解决方式,多个参数就中间用逗号隔开,好了,警告消失了。此外,Exception可以不加占位符。

在这里插入图片描述

吃一堑长一智,以后别看日志的时候发现参数为空就以为是参数没传,去检查下是不是日志记录的就有问题。

四.控制台不打印堆栈信息
解决方式就是我上面那种写法就好了,
说下情况,如果对异常进行了捕获,如果不将Exception打印出来,那么出错的话控制台将看不到你的平时看到的堆栈信息,不信你们试试,当然,如果不捕获异常直接抛出是可以显示在控制台的。

在这里插入图片描述

e.getMessage是打印错误内容,
e.toString()获取的信息包括异常类型和异常详细消息
e:在控制台打印出异常种类,错误信息和出错位置等
————————————————
版权声明:本文为CSDN博主「春风又绿江南岸」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43997548/article/details/113407599

延伸阅读
    发表评论