springMVC配置log4j2.xml发送error日志邮件

2021-01-06 18:28

阅读:815

标签:err   jar   group   配置   springmvc   ima   nbsp   全局异常处理   ack   

先引入jar包

     dependency>
            groupId>javax.activationgroupId>
            artifactId>activationartifactId>
            version>1.1.1version>
        dependency>
        dependency>
            groupId>javax.mailgroupId>
            artifactId>mailartifactId>
            version>1.4.7version>
        dependency>

log4j2.xml配置,放入 appenders 标签里面

SMTP name="Mailer" subject="错误日志" to="1030872042@qq.com" from="1030872042@qq.com" smtpHost="smtp.qq.com" timeOut="1000" smtpDebug="false" smtpUsername="1030872042" smtpPassword="spcggsezcwdxbehh" bufferSize="1024">
            ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
        SMTP>
        Async name="AsyncMailer" > AppenderRef ref="Mailer"/> Async>

 

这里说下 smtpPassword不是你邮箱密码,

qq邮箱上方设置--》账户, 拉到下方,把什么IMAP  POP3 管他是啥都开启, 然后生成授权码,就是smtpPassword的值

技术图片

 

再在log4j2.xml 文件加上   

  这句

技术图片

基本完事,注意:邮件只会发送log.error()输出的内容,而且邮箱的邮件 不是随便发的 有数量限制,比如每天上限,每分钟上限多少封,超了直接就报错,连接被拒绝,这么一限制感觉没啥意思了。

这里引出来一个问题,比如我想警告的异常是那种我根本不知道的,未知的运行时异常,怎么办呢? 比如什么sql执行的异常,空指针什么的,我要是知道我也不会打印什么log.error啊 我直接处理了。
这就扯出来 全局异常处理了,@RestControllerAdvice
@ExceptionHandler
技术图片

直接我就再里面来了这么个方法,别说还真可以, 随便找个方法来个 1/0, 邮件到位。 但是总感觉不对,我不能啥异常都抓啊,还是得细分指定异常,而且我只想检测某个service,这怎么整?
就想到一个东西@Aspect, 直接写个切面类,来个@AfterThrowing, 这玩意是不是比上面那个好用?
   @AfterThrowing(throwing="ex", pointcut="execution(* pdream.demo.service.impl.*.*(..))")
    public void doRecoveryActions(Throwable ex) {
        System.out.println("目标方法中抛出的异常:" + ex);
        log.error("异常来了...");
    }

还有个问题,怎么控制邮件频率, 不能频繁发,太频繁在一段时间内只要发邮件就会报错。



springMVC配置log4j2.xml发送error日志邮件

标签:err   jar   group   配置   springmvc   ima   nbsp   全局异常处理   ack   

原文地址:https://www.cnblogs.com/tmxk-qfzz/p/12968291.html

上一篇:Json相关定义

下一篇:python封装


评论


亲,登录后才可以留言!