SpringBoot-业务中优雅的打印日志
2026年3月25日小于 1 分钟SpringBootSpringBoot
概述
如何在业务中打印日志,通常做法是使用log.info(...)输出日志。 今天使用aop拦截器打印日志
实现
package com.open4play.center.infrastructure.aop;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.aop.Advisor;
import org.springframework.aop.aspectj.AspectJExpressionPointcut;
import org.springframework.aop.interceptor.CustomizableTraceInterceptor;
import org.springframework.aop.support.DefaultPointcutAdvisor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
@EnableAspectJAutoProxy(proxyTargetClass = true)
@Aspect
@Configuration
public class TraceAopConfig {
@Pointcut("execution(* com.open4play.center.controller..*.*(..))")
public void monitor() {}
/**
* 监控追踪
* @return Advisor
*/
@Bean
public Advisor traceAdvisor() {
CustomizableTraceInterceptor customizableTraceInterceptor = new CustomizableTraceInterceptor();
customizableTraceInterceptor.setEnterMessage("Enter ClassName=$[targetClassName]: $[methodName]($[arguments])");
customizableTraceInterceptor.setExitMessage("Exit $[methodName]: $[returnValue]");
customizableTraceInterceptor.setUseDynamicLogger(true);
AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut();
pointcut.setExpression("com.open4play.center.infrastructure.aop.TraceAopConfig.monitor()");
return new DefaultPointcutAdvisor(pointcut, customizableTraceInterceptor);
}
}