SpringBoot进阶之AOP统一处理http请求日志
来源:互联网 发布:国外购物网站 知乎 编辑:程序博客网 时间:2024/05/21 09:23
相关注解
1、@Aspect 放在类上面,把该类作为一个切面
2、@Pointcut 放在方法上面,定义一个可被别的方法引用的切入点表达式
3、@Before 放在方法上面,前置通知 方法执行前执行
4、@After 放在方法上面 后置最终通知 方法最后执行
5、@AfterReturning 放在方法上面 后置返回通知 方法执行完执行
6、@AfterThrowing 放在方法上面 后置异常通知 方法异常时执行
7、@Around 放在方法上面 环绕通知
---------------------示例代码---------------------
在pom.xml中配置
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>
HttpAspect类代码
package com.tg.aspect;import ch.qos.logback.core.net.SyslogOutputStream;import org.apache.tomcat.util.http.fileupload.RequestContext;import org.aspectj.lang.JoinPoint;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.*;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.util.Objects;/** * Created by TG on 2017-10-12. */@Aspect@Componentpublic class HttpAspect { private final static Logger logger=LoggerFactory.getLogger(HttpAspect.class); @Pointcut("execution(public * com.tg.controller.GirlController.*(..))") public void log(){ } @Around("log()") public Object aroundLogCalls(ProceedingJoinPoint jp) throws Throwable { logger.info("方法环绕start....."); Object o = null; try { o = jp.proceed(); } catch (Throwable e) { e.printStackTrace(); } logger.info("方法环绕end....."); return o; } /** * 打印请求的url method ip 类方法 参数 * @param joinPoint */ @Before("log()") public void doBefore(JoinPoint joinPoint){ ServletRequestAttributes attributes= (ServletRequestAttributes)RequestContextHolder.getRequestAttributes(); HttpServletRequest request =attributes.getRequest(); //url logger.info("url={}",request.getRequestURL()); //method logger.info("method={}",request.getMethod()); //ip logger.info("ip={}",request.getRemoteAddr()); //类方法 logger.info("class_method={}",joinPoint.getSignature().getDeclaringTypeName()+"."+joinPoint.getSignature().getName()); //参数 logger.info("args={}",joinPoint.getArgs()); } // @After("execution(public * com.tg.controller.GirlController.*(..))") @After("log()") public void doAfter(){ logger.info("方法结束"); } /** * 打印请求的具体内容 * @param objects */ @AfterReturning(returning = "objects",pointcut = "log()") public void doAfterReturning(Objects objects){ logger.info("response={}",objects); } @AfterThrowing("log()") public void cathInfo(){ logger.info("异常信息"); }}
执行效果图
阅读全文
0 0
- SpringBoot进阶之AOP统一处理http请求日志
- SpringBoot AOP统一处理请求日志
- springboot【19】日志管理之使用AOP统一处理Web请求日志
- Springboot学习-使用AOP统一处理Web请求日志(六)
- (十四)SpringBoot使用AOP统一处理Web请求日志添加MDC
- spring boot 基础之使用AOP统一处理请求日志使用方法
- SpringBoot-AOP处理请求
- Spring Boot中使用AOP统一处理Web请求日志
- Spring Boot中使用AOP统一处理Web请求日志
- Spring Boot中使用AOP统一处理Web请求日志
- Spring Boot中使用AOP统一处理Web请求日志
- spring boot 使用AOP统一处理Web请求日志
- SpringBoot进阶之统一异常处理(含源码)
- Springboot-访问日志统一处理
- SpringBoot添加AOP处理请求
- SpringBoot 中Aop处理请求
- SpringBoot 使用AOP处理请求
- SpringBoot之统一异常处理
- 安卓轮播图的实现(自定义view)
- java 切割文件夹下一定格式的文件名
- layui.table中数据的准备
- perl open函数的使用
- 开发中需要的一些网络判断
- SpringBoot进阶之AOP统一处理http请求日志
- 自定义View学习篇之绘制一个圆环动画
- Node.js学习之内置模块http
- 解决MATLAB出现Warning: Name is nonexistent or not a directory的办法
- Android studio 提示adb.exe已停止运行的解决办法
- elasticsearch5.5启动出现的错误
- C_001.如何成立一家新公司:(腾讯云)—轻公司
- Gartner公布2018年十大战略科技发展趋势
- Debian 环境下 vim编辑器 c语言代码高亮问题