@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添加日志相关推荐

  1. idea 跑springboot项目不报log日志

    idea 跑springboot项目不报log日志 application.yml中指定了某一配置文件生效,但是在logback-spring.xml中没有配置

  2. Springboot项目通过logstash将日志分类写入Elasticsearch

    需求:我们需要把线上日志收集起来进行分析.在开发阶段,更多的时候程序是运行在本地,所以使用FileBeats就有点繁琐.我们采用直接将日志通过tcp输出到logstash的方案. 同时,我们的日志并没 ...

  3. springboot使用AOP打印日志信息

    上一篇介绍了springboot整合Mybatis例子,这一篇在上一篇的基础上,简单修改部分实现日志信息的打印. 随着项目功能的一点点增加,打印日志信息就非常必要了,可以帮助我们很快确定哪里出现了问题 ...

  4. SpringBoot12 QueryDSL01之QueryDSL介绍、springBoot项目中集成QueryDSL、利用QueryDSL实现单表RUD、新增类初始化逻辑...

    1 QueryDSL介绍 1.1 背景 QueryDSL的诞生解决了HQL查询类型安全方面的缺陷:HQL查询的扩展需要用字符串拼接的方式进行,这往往会导致代码的阅读困难:通过字符串对域类型和属性的不安 ...

  5. IDEA下SpringBoot项目的引用类没问题却提示:java:找不到符号:类**位置:程序包

    场景 在IDEA下正在调试运行的SpringBoot项目,然后添加了使用代码生成工具生成的domain.Controller.service.serviceImpl.Mapper层的文件后,再次重新调 ...

  6. SpringBoot项目Docker化并上传DockerHub的使用过程

    . springboot项目 docker化 添加依赖 代码片段:<plugin><groupId>com.spotify</groupId><artifac ...

  7. linux 自动运行.out,linux系统定时自动重启springboot项目

    一.创建脚本auto_reset_springboot.sh,tempurl:项目文件夹路径 !/bin/bash ID=`ps -ef | grep java| grep -v "grep ...

  8. SpringBoot项目的创建和启动

    文章目录 Spring Boot 1.概念 2. SpringBoot项目的创建 3. SpringBoot网页版创建 4. 启动SpringBoot Spring Boot 1.概念 Spring ...

  9. SpringBoot中使用AOP打印接口日志的方法(转载)

    前言 AOP 是 Aspect Oriented Program (面向切面)的编程的缩写.他是和面向对象编程相对的一个概念.在面向对象的编程中,我们倾向于采用封装.继承.多态等概念,将一个个的功能在 ...

  10. Springboot项目Aop、拦截器、过滤器横向对比

    前言 伟人曾经说过,没有调查就没有发言权(好像是伟人说的,不管谁说的,这句话是正确的),有些东西看着简单,张口就来,但很有可能是错的.我个人的经验是,aop.过滤器.拦截器的实现方式很简单,一学就会, ...

最新文章

  1. 支付方式(2)——支付宝集成及使用
  2. Oracle TNS协议中数据包的内部结构
  3. Oracle技术之OCRCONFIG工具
  4. ITK:使用最小最大曲率流平滑RGB图像
  5. python qt 拖拽组件使用方法_Python QT组件库qtwidgets的使用
  6. java泛型 之 入门(interface)
  7. 计算机创业计划书800字大全,大学生创业计划书800字左右.docx
  8. javascript计算两条直线的夹角
  9. python爬虫 | 同步刷新网页爬取实例 | 小白篇
  10. 哲学宗师 -- 柏拉图
  11. sqli-labs(28-28a)
  12. 弃用 Notepad++,这款开源替代品更牛逼!
  13. 指数加权移动平均(Exponential Weighted Moving Average)
  14. 你会用微信付款码支付吗?一定要打开这个设置,保障你资金安全
  15. 信息安全等级测评师考试重点梳理
  16. python爬虫实训实验报告_用Pycharm进行scrapy爬虫的实验报告
  17. Java工程师面试题,最全的java手机游戏免费下载基地
  18. Hibernate的多种关系映射(oto、otm、mtm)
  19. XiaoHu日志 9/2
  20. n5105和n5095差距

热门文章

  1. 51cto案例精解第一章PPT
  2. Pr 入门教程,如何在节目监视器中修剪剪辑?
  3. Nexus-NuGet私有仓库服务搭建(一)
  4. ARKit何以从同类技术中胜出?
  5. Spring概况(一)
  6. rsync使用(二)
  7. 理解OAuth 2.0[摘]
  8. netdev_priv
  9. 游戏开发--开源软件13--libgdx(Android)||Angle(android 2D...
  10. android webkit js脚本注入(js内部对象由java层构建)