spring boot 全局统一日志打印

欢迎关注本人公众号

在这里插入图片描述

概述

本文以使用spring boot或者springmvc为例。
微服务之间调用,或者controller接收请求时,为了方便排查问题,通常会将入参与出参(返回值)打印出来。

为了简化代码,这里使用AOP统一处理日志的打印。

由于比较简单,废话不多说,直接上代码:

@Aspect
@Component
@Slf4j
public class LogAspect  {
    @Pointcut("execution(public * com.example.controller..*.*(..))")
    public void webLog() {
    }

    @Around("webLog()")
    public Object around(ProceedingJoinPoint joinPoint)throws Throwable{
        Object proceed = joinPoint.proceed();
        log.info("METHOD : {} ; REQUEST:{} ; RESPONSE : {}",
                joinPoint.getSignature().toShortString(),
                JSONObject.toJSONString(joinPoint.getArgs()),
                JSONObject.toJSONString(proceed));
        return proceed;
    }
}

我们访问controller方法时,会打印入参出参:

METHOD : ValidateController.test1(..) ; REQUEST:[{"age":0,"balance":1.34,"fatherVO":{"name":"zd","work":"dxx"},"fatherVOs1":[[{"work":"dxx"}]],"fatherVOs2":[{"name":"zd","work":"dxx"}],"name":"12d"}] ; RESPONSE : "12d"
METHOD : ValidateController.test2(..) ; REQUEST:[{"a":false,"name":"a","work":"s"}] ; RESPONSE : "a"

酱紫就可以愉快的查看日志,排查问题了。

你可能感兴趣的:(spring,boot,2.X/spring,cloud,Greenwich,spring,boot)