在SpringBoot中使用logback优化异常堆栈的输出

网友投稿 284 2022-09-26

在SpringBoot中使用logback优化异常堆栈的输出

在SpringBoot中使用logback优化异常堆栈的输出

​​一、背景​​​​二、需求​​

​​1、现有的异常堆栈信息​​​​2、我们想优化成如下​​

​​三、使用的技术​​​​四、技术实现​​

​​1、引入依赖​​

​​1、如果发生了异常​​​​2、jdk的版本依赖​​

​​2、代码实现​​​​3、使用 ShortenedThrowableConverter 来优化异常堆栈​​​​4、查看运行结果​​

​​五、完整代码​​​​六、参考文档​​

一、背景

在我们在编写程序的过程中,无法保证自己的代码不抛出异常。当我们抛出异常的时候,通常会将整个异常堆栈的信息使用日志记录下来。通常一整个异常堆栈的信息是比较多的,而且存在一些没用的信息。​​那么我们如何优化一些异常堆栈的信息打印,过滤掉不必要的信息呢?​​

二、需求

1、现有的异常堆栈信息

2、我们想优化成如下

三、使用的技术

四、技术实现

1、引入依赖

org.springframework.boot spring-boot-starter-web net.logstash.logback logstash-logback-encoder 7.1.1

注意: 使用​​​logstash-logback-encoder​​有一些依赖项,我当前使用的依赖项如下:

1、如果发生了异常

2、jdk的版本依赖

2、代码实现

3、使用 ShortenedThrowableConverter 来优化异常堆栈

stack{100,16,2048,rootFirst,regex1,regex2,evaluatorName} 参数解释: 建议查看源码 net.logstash.logback.stacktrace.ShortenedThrowableConverter#parseOptions() 方法 第1参数: maxDepthPerThrowable:值可以是 full或者short或者int值,表示每个异常最多打印多少个 stackTraceElements 元素 第2参数: shortenedClassNameLength:值可以是 full或者short或者int值,将尝试将类名长度缩短到小于此值 com.huan.springboot.service.ExceptionService 可能会变成 c.h.s.s.ExceptionService 第3参数: maxLength:值可以是 full或者short或者int值,指的输出到日志中整个堆栈最大能存在多少个字符。 后面这些参数没有固定顺序 第4参数: rootFirst: 可选参数,如果使用该参数,值就是 rootFirst ,表示应首先打印堆栈的根本原因 第5参数: inlineHash: 可选参数,如果使用该参数,值就是 inlineHash, 指示应该计算和内联十六进制错误哈希 如果参数都不是上方的类型,那么可能是 evaluator 或者 exclude 类型,这2个都是判断这个 stackTraceElement 是否应该被打印,这2个参数没有顺序关系 evaluator: 值的是需要实现 EventEvaluator 的类 exclude: 指的是需要排除的正则表达式, 如果存在.需要转义成 \.

4、查看运行结果

五、完整代码

​​2、​​3、​​https://srccodes.com/shorten-logger-name-customize-optimize-exception-stack-traces-logback-logstashencoder-shortenedthrowableconverter/​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringBoot自定义控制层参数解析
下一篇:汉代海昏侯国遗址公园开园,这些文物不要错过!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~