濮阳建站推广哪家好,wordpress邮件发送不出去,设计师之家资源库,优秀网站下载springboot通过aop自定义注解Log实现日志打印 文章目录 效果图实操步骤1.引入依赖2.自定义日志注解3.编写日志切面类4.UserController5.运行 效果图 实操步骤
注意#xff0c;本代码在springboot环境下运行#xff0c;jdk1.8
1.引入依赖
dependencygroupIdLog实现日志打印 文章目录 效果图实操步骤1.引入依赖2.自定义日志注解3.编写日志切面类4.UserController5.运行 效果图 实操步骤
注意本代码在springboot环境下运行jdk1.8
1.引入依赖
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-aop/artifactId
/dependency
dependencygroupIdorg.jodd/groupIdartifactIdjodd/artifactIdversion3.3.7/version
/dependency2.自定义日志注解
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;/*** 日志注解* author woniu*/
Retention(RetentionPolicy.RUNTIME) //注解在源码、字节码、运行期间都存在
Target({ElementType.METHOD}) //作用在方法上
public interface WoniuLog {
}3.编写日志切面类
import com.alibaba.fastjson.JSONArray;
import org.apache.commons.lang3.StringUtils;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.reflect.MethodSignature;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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.lang.reflect.Method;
import java.util.Optional;import static jodd.util.MimeTypes.MIME_APPLICATION_JSON;/*** 日志切面类* author woniu*/
Aspect //代表这是一个切面类
Component //注入到spring ioc
public class WoniuLogAspect {private static final Logger log LoggerFactory.getLogger(WoniuLogAspect.class);public WoniuLogAspect() {}/*** 前置通知* annotation(WoniuLog) 表示切面只对加了WoniuLog的方法生效*/Before(annotation(WoniuLog))public void doBefore(JoinPoint joinPoint) {ServletRequestAttributes requestAttributes (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();if (requestAttributes ! null) {HttpServletRequest request requestAttributes.getRequest();String contentType request.getContentType();//只有contentTypeapplication/json 的才加日志打印if (StringUtils.isNotEmpty(contentType)contentType.contains(MIME_APPLICATION_JSON)) {Class? clazz joinPoint.getTarget().getClass();Method method ((MethodSignature) joinPoint.getSignature()).getMethod();log.info(------------------------------------------AOP日志start--------------------------------------------------------);log.info([AOP日志]:类名:{}, clazz.getName());log.info([AOP日志]:方法名:{}, method.getName());Optional.ofNullable(joinPoint.getArgs()).ifPresent(x - {for (Object arg : x) {String temp JSONArray.toJSONString(x);log.info([AOP日志]:方法入参:{}, temp);}});log.info(------------------------------------------AOP日志end--------------------------------------------------------);}}}}4.UserController
ApiOperation(value 查询分页列表)
PostMapping(/pageList)
WoniuLog
public ResultPageResultUserRespVo pageList(RequestBody UserReqVo reqVo) {PageResultUserRespVo result userService.findList(reqVo);return Result.ok(result);
}5.运行