Spring Boot+AOP记录日志

来源:互联网 发布:下载文件网页源码 编辑:程序博客网 时间:2024/06/16 02:36

1、pom.xml中加入web依赖

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

2、编写测试Controller和Service

@RestControllerpublic class TestController {    @Autowired    private TestService testService;    @RequestMapping("/hello")    public String doSomething(String name){        return testService.hello(name);    }}
@Servicepublic class TestService {    public String hello(String name){        try{            Thread.sleep(1000);        }catch (Exception e){            e.printStackTrace();        }        return "Hello "+name;    }}

3、pom.xml中加入aop依赖

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

4、编写切面

@Aspect@Componentpublic class LogAspect {    private static final Logger log = LoggerFactory.getLogger(LogAspect.class);    ThreadLocal<Long> startTime = new ThreadLocal<>();    @Pointcut("execution(* com.wz.controller..*.*(..))")    public void logPointcut(){}    @Before("logPointcut()")    public void doBefore(JoinPoint joinPoint) {        log.info("[CLASS_METHOD] : " + joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName());        log.info("[ARGS] : " + Arrays.toString(joinPoint.getArgs()));        startTime.set(System.currentTimeMillis());    }    @AfterReturning(returning = "ret", pointcut = "logPointcut()")    public void doAfterReturning(Object ret) {        log.info("[RESPONSE] : " + ret);        log.info("[COST TIME] : " + (System.currentTimeMillis() - startTime.get()));    }    @AfterThrowing(throwing="ex", pointcut="logPointcut()")    public void doAfterThrowing(Throwable ex) {        log.error("[EXCEPTION] : " + ex);    }}

源码地址:点击打开链接

0 0
原创粉丝点击