日志异常处理-spring aop注解

本文介绍了一个简单的Spring AOP实现,用于处理程序中出现的异常并将其转换为JSON格式的日志。通过使用AspectJ注解,此方法能够在不影响原始业务逻辑的情况下捕捉异常,并详细记录异常类名、消息、发生方法及参数。

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

spring aop 可以在不破坏我们程序代码的前提下很好的对程序异常进行打印,网上也有很多这样的例子,我这里写的比较简单,只是针对程序出异常时进行见到的日志打印,代码比较简单。

 

异常日志处理类

package com.apt.study.exception;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import com.alibaba.fastjson.JSONObject;

@Component
@Aspect
public class ExceptionToJson {
    
    public Logger logger = LoggerFactory.getLogger(ExceptionToJson.class);

    @Pointcut("execution(* com.apt.study.service..*.*(..))")
    public void exceptionLog() {
        
    }
    
    
     @AfterThrowing(pointcut = "exceptionLog()", throwing="e")  
     public  void doAfterThrowing(JoinPoint joinPoint, Throwable e) { 
         try {
              logger.error("------->Error Class:" + e.getClass().getName());  
             logger.error("------->Error msg:" + e.getMessage());  
             logger.error("------->Error method:" + (joinPoint.getTarget().getClass().getName() + "." + joinPoint.getSignature().getName() + "()"));  
             Object[] arguments = joinPoint.getArgs(); 
             if (arguments !=  null && arguments.length > 0) {  
                 for ( int i = 0; i < arguments.length; i++) {  
                   logger.error("------->args[" + i + "]: " + JSONObject.toJSONString(arguments[i])); 
                 } 
             }
        }  catch (Exception ex) {  
            //记录本地异常日志  
            logger.error("------->异常通知异常");  
            logger.error("------->异常信息:{}", ex.getMessage());  
        }
         
     }
}

 

转载于:https://www.cnblogs.com/sjcq/p/7452947.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值