logback系统级错误日志推送邮件

本文介绍如何在Logback中配置过滤特定自定义异常CustException的日志记录,通过修改异常类并在日志级别判断中加入特定条件,实现只推送非CustException错误日志至邮箱的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、logback邮件推送时,过滤正常错误日志:

问题背景:之前将error日志推送邮件的方式来监控系统bug,但是大量Custexception错误,我们是不需要关注的,也会打error日志而推送邮件。这样的邮件多了之后发发你好会分散我们的关注精力,所以想将Custexception的error日志过滤掉不推送邮件。

1)Custexception抛出时,message里面放入拼接了[CustException-]的错误内容信息,新建属性msg,保留原本错误内容信息,用于返回前端
2)判断表达式里面根据throwableProxy.getMessage().contains("CustException");来判断error级别的错误日志里面是否包含需要过滤的字符串[CustException]
 1 <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
 2             <evaluator class="ch.qos.logback.classic.boolex.JaninoEventEvaluator">
 3                 <expression>
 4                     <!-- & encoded as &amp; -->
 5                     if(level > WARN) {
 6                         if(null != throwableProxy){
 7                              return !throwableProxy.getMessage().contains("CustException");
 8                         }
 9                         return true;
10                     }
11                     return false;
12                 </expression>
13             </evaluator>
14             <onMatch>ACCEPT</onMatch>
15             <onMismatch>DENY</onMismatch>
16         </filter>
 1 public class CustException extends RuntimeException {
 2     private static String DEFAULT_MSG = "CustException-";
 3 
 4     public CustException(String message) {
 5         super(DEFAULT_MSG + message);
 6         this.msg = message;
 7     }
 8 
 9     private String msg;
10 
11     public CustException(int errCode, String message) {
12         super(DEFAULT_MSG + message);14         this.msg = message;
15     }
16 
17     public CustException(Throwable cause) {
18         super(cause);
19     }
20 
21     public CustException(String message, Throwable cause) {
22         super(DEFAULT_MSG + message, cause);
23         this.msg = message;
24     }
25 
26     public String getMsg() {
27         return msg;
28     }
29 
30     public void setMsg(String msg) {
31         this.msg = msg;
32     }
33 }
1     } catch (CustException ce) {
2             logger.error("BasExpressController.qryExpress.error", ce);
3             return RetUtils.resFailed(ce.getMsg());
4         } catch (Exception e) {
5             logger.error("BasExpressController.qryExpress.error", e);
6             return RetUtils.resFailed("系统异常");
7         }

 

转载于:https://www.cnblogs.com/CurrentStep/p/6519282.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值