如何给java项目写日志切面工具类

话不多说,直接上代码!

package com.dada.kit.vivo.aop;

import com.dada.kit.utils.InfoLogUtil;
import com.dada.kit.logger.CxLogFieldName;
import com.dada.kit.logger.CxLogManager;
import com.dada.kit.logger.CxLogger;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;

/**
 * Desc:
 *
 * @author daxing.li
 * @create 2019-10-14 17:32
 */
@Component
@Aspect
public class ControllerAspect extends AbstractAspect{

    private static CxLogger logger = CxLogManager.getLogger(ControllerAspect.class).defaultTag("type", "ControllerAspect");

    private static final String INBOUND = "INBOUND";


    @Pointcut("execution(* com.dada..vivo.controller..*.*(..))")
    private void controllerPointCut() {
    }

    @Before(value = "controllerPointCut()")
    public void doBefore(JoinPoint joinPoint) {
        getThreadLocal().get().put(joinPoint.getSignature().toString(), System.currentTimeMillis());
        logger.tag(CxLogFieldName.LOG_TYPE, INBOUND);
        InfoLogUtil.info("Controller Start: " + joinPoint.getSignature(), logger);
    }

    @AfterReturning(value = "controllerPointCut()", returning = "response")
    public void responseLog(JoinPoint joinPoint, Object response) {
        if (response == null) {
            response = new Object();
        }
        logger.tag(CxLogFieldName.LOG_TYPE, INBOUND);
        long time = System.currentTimeMillis() - (Long) threadLocal.get().get(joinPoint.getSignature().toString());
        InfoLogUtil.info("Controller End: " + joinPoint.getSignature() + ", response: " + response, time, logger);
    }

    @AfterThrowing(value = "controllerPointCut()", throwing = "e")
    public void exceptionLog(JoinPoint joinPoint, Exception e) {
        logger.tag(CxLogFieldName.LOG_TYPE, INBOUND);
        InfoLogUtil.error("Controller Exception: " + joinPoint.getSignature() + ", message = " + e.getMessage(), e, logger);
    }

}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值