Springboot项目使用aop添加日志
@Aspect @Component public class Log {private static Logger logger = LogManager.getLogger(Log.class);private String method;private String ip;private int port;private String host;private String url;/*** 定义切入点*/@Pointcut("execution(public * com.angin.iit.controller..*.*(..))")public void log() {}/*** 执行方法前 获取client参数** @param joinPoint*/@Before("log()")public void doBefore(JoinPoint joinPoint) {//取到requestServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();HttpServletRequest request = attributes.getRequest();ip = request.getRemoteAddr();//客户端iphost = request.getRemoteHost();//客户端主机method = request.getMethod();//客户端请求方法port = request.getRemotePort();//客户端请求porturl=request.getRequestURL().toString();//请求url//记录client信息logger.info("client:ip=" + ip + ";host=" + host + ";method=" + method + ";port=" + port+";url="+url);//类名String classname = joinPoint.getTarget().getClass().getSimpleName();//方法名String methodName = joinPoint.getSignature().getName();//参数List<Object> args = Arrays.asList(joinPoint.getArgs());String paraJsonString = JSON.toJSONString(args, SerializerFeature.DisableCircularReferenceDetect);//日志记录 类 方法 参数logger.info("class name: " + classname + ", method name: " + methodName + ";parameters: " + paraJsonString);}/*** 方法执行** @param proceedingJoinPoint* @return* @throws Throwable*/@Around("log()")public Object doAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {Object obj = proceedingJoinPoint.proceed();logger.info("return:" + obj);return obj;}/*** 异常处理** @param e*/@AfterThrowing(pointcut = "log()", throwing = "e")public void doException(Throwable e) {if (e != null) {logger.error("doException系统异常:" + e.getMessage(), e);}}
之前记录日志的时候,都是在controller里 每个方法中添加,使用aop 节约了很多时间,而且维护起来更方便。
转载于:https://www.cnblogs.com/angin-iit/p/10401483.html
Springboot项目使用aop添加日志相关推荐
- idea 跑springboot项目不报log日志
idea 跑springboot项目不报log日志 application.yml中指定了某一配置文件生效,但是在logback-spring.xml中没有配置
- Springboot项目通过logstash将日志分类写入Elasticsearch
需求:我们需要把线上日志收集起来进行分析.在开发阶段,更多的时候程序是运行在本地,所以使用FileBeats就有点繁琐.我们采用直接将日志通过tcp输出到logstash的方案. 同时,我们的日志并没 ...
- springboot使用AOP打印日志信息
上一篇介绍了springboot整合Mybatis例子,这一篇在上一篇的基础上,简单修改部分实现日志信息的打印. 随着项目功能的一点点增加,打印日志信息就非常必要了,可以帮助我们很快确定哪里出现了问题 ...
- SpringBoot12 QueryDSL01之QueryDSL介绍、springBoot项目中集成QueryDSL、利用QueryDSL实现单表RUD、新增类初始化逻辑...
1 QueryDSL介绍 1.1 背景 QueryDSL的诞生解决了HQL查询类型安全方面的缺陷:HQL查询的扩展需要用字符串拼接的方式进行,这往往会导致代码的阅读困难:通过字符串对域类型和属性的不安 ...
- IDEA下SpringBoot项目的引用类没问题却提示:java:找不到符号:类**位置:程序包
场景 在IDEA下正在调试运行的SpringBoot项目,然后添加了使用代码生成工具生成的domain.Controller.service.serviceImpl.Mapper层的文件后,再次重新调 ...
- SpringBoot项目Docker化并上传DockerHub的使用过程
. springboot项目 docker化 添加依赖 代码片段:<plugin><groupId>com.spotify</groupId><artifac ...
- linux 自动运行.out,linux系统定时自动重启springboot项目
一.创建脚本auto_reset_springboot.sh,tempurl:项目文件夹路径 !/bin/bash ID=`ps -ef | grep java| grep -v "grep ...
- SpringBoot项目的创建和启动
文章目录 Spring Boot 1.概念 2. SpringBoot项目的创建 3. SpringBoot网页版创建 4. 启动SpringBoot Spring Boot 1.概念 Spring ...
- SpringBoot中使用AOP打印接口日志的方法(转载)
前言 AOP 是 Aspect Oriented Program (面向切面)的编程的缩写.他是和面向对象编程相对的一个概念.在面向对象的编程中,我们倾向于采用封装.继承.多态等概念,将一个个的功能在 ...
- Springboot项目Aop、拦截器、过滤器横向对比
前言 伟人曾经说过,没有调查就没有发言权(好像是伟人说的,不管谁说的,这句话是正确的),有些东西看着简单,张口就来,但很有可能是错的.我个人的经验是,aop.过滤器.拦截器的实现方式很简单,一学就会, ...
最新文章
- 支付方式(2)——支付宝集成及使用
- Oracle TNS协议中数据包的内部结构
- Oracle技术之OCRCONFIG工具
- ITK:使用最小最大曲率流平滑RGB图像
- python qt 拖拽组件使用方法_Python QT组件库qtwidgets的使用
- java泛型 之 入门(interface)
- 计算机创业计划书800字大全,大学生创业计划书800字左右.docx
- javascript计算两条直线的夹角
- python爬虫 | 同步刷新网页爬取实例 | 小白篇
- 哲学宗师 -- 柏拉图
- sqli-labs(28-28a)
- 弃用 Notepad++,这款开源替代品更牛逼!
- 指数加权移动平均(Exponential Weighted Moving Average)
- 你会用微信付款码支付吗?一定要打开这个设置,保障你资金安全
- 信息安全等级测评师考试重点梳理
- python爬虫实训实验报告_用Pycharm进行scrapy爬虫的实验报告
- Java工程师面试题,最全的java手机游戏免费下载基地
- Hibernate的多种关系映射(oto、otm、mtm)
- XiaoHu日志 9/2
- n5105和n5095差距