1. 程式人生 > 其它 >springboot使用aop記錄日誌

springboot使用aop記錄日誌

技術標籤:javaspringboot日誌aop

主要是用來記錄請求引數和響應結果,方便部署到伺服器上以後可以通過日誌來查詢問題:
首先新增如下依賴:

		<!--aop-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

然後編寫一個aop的配置類:

package com.sztf.shidaikeyi.config;

import cn.hutool.extra.servlet.ServletUtil;
import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.
annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest;
import java.util.Arrays; /** * 列印引數日誌切面類 * * @Author: ljp * @CreateDate: 2021/2/2 14:03 */ @Aspect @Component @Slf4j public class LogAspect { @Pointcut("execution(public * com.sztf.shidaikeyi.*.*(..))") public void getMethodName() { } //在這裡指定切入點 條件一:com.sztf.shidaikeyi包下 條件二:帶有@RestController註解 @Pointcut("within(com.sztf.shidaikeyi..*) && @within(org.springframework.web.bind.annotation.RestController)") public void printParams() { } /** * 列印請求引數 * * @param joinPoint */ @Before(value = "printParams()") public void paramsLog(JoinPoint joinPoint) { ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = requestAttributes.getRequest(); log.info("sign -- {}", joinPoint.getSignature()); log.info("請求地址:" + request.getRequestURL().toString()); log.info("請求方式:" + request.getMethod()); if ("POST".equals(request.getMethod())) { log.info("請求引數:" + Arrays.toString(joinPoint.getArgs())); } else { log.info("請求引數:{}", ServletUtil.getParamMap(request)); } } /** * 列印響應內容 * * @param o */ @AfterReturning(returning = "o", pointcut = "printParams()") public void methodAfterReturn(Object o) { log.info(JSONUtil.parse(o).toJSONString(1)); } }

新增以後就可以列印專案了,還是比較簡單的,在這裡記錄一下