话不多说,直接上代码!
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);
}
}