spring boot aop日志管理(MongoDB)

aop拦截的是controller层请求,正常的请求用@Before来拦截,
异常的请求用@AfterThrowing来拦截
1、引用aop jar包

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-aop</artifactId>
        <version>2.0.3.RELEASE</version>
    </dependency>

2、代码实现

@Aspect
@Component
@Slf4j
public class LogAop {

    @Autowired
    private MongoTemplate mongoTemplate;

    @Pointcut("execution(public * com.caody.muyi.controller.*.*(..))")
    public void logAop(){};

    @Before("logAop()")
    public void around(JoinPoint joinPoint){
        log.info("user:cdy");
        log.info("time:"+new Date());
        log.info("CLASS_METHOD : " + joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature
            ().getName());
        log.info("ARGS : " + Arrays.toString(joinPoint.getArgs()));

        OperationLog operationLog = new OperationLog();
        operationLog.setLogname("cdy");
        operationLog.setLogtype("业务日志");
        operationLog.setCreatetime(new Date());
        operationLog.setUserid(1);
        operationLog.setClassname(joinPoint.getSignature().getDeclaringTypeName());
        operationLog.setMethod(joinPoint.getSignature().getName());
        operationLog.setSucceed("成功");
        operationLog.setMessage("");
       mongoTemplate.save(operationLog);
    }

//    @AfterReturning(returning = "object", pointcut = "logAop()")
//    public void after(Object object){
//        System.out.println(object);
//        log.info("RESPONSE : " + object);
//    }

    @AfterThrowing(pointcut = "logAop()", throwing="e")
    public  void  afterThrowing(JoinPoint joinPoint, Throwable e){
        log.info("user:cdy");
        log.info("time:"+new Date());
        log.info("path : " + joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature
            ().getName());
        log.info("param : " + Arrays.toString(joinPoint.getArgs()));
        log.info("异常代码:" + e.getClass().getName());
        log.info("异常信息:" + e.getMessage());

        OperationLog operationLog = new OperationLog();
        operationLog.setLogname("cdy");
        operationLog.setLogtype("异常日志");
        operationLog.setCreatetime(new Date());
        operationLog.setUserid(1);
        operationLog.setClassname(joinPoint.getSignature().getDeclaringTypeName());
        operationLog.setMethod(joinPoint.getSignature().getName());
        operationLog.setSucceed("失败");
        operationLog.setMessage(e.getMessage());
        mongoTemplate.save(operationLog);

    }

}

作者:周六不算加班
链接:https://www.jianshu.com/p/a0f3adced194
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

原文地址:https://www.cnblogs.com/liuxiaofu/p/12005746.html

时间: 2024-08-09 06:27:35

spring boot aop日志管理(MongoDB)的相关文章

spring boot aop打印http请求回复日志包含请求体

一.引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>

Spring Boot AOP解析

Spring Boot AOP 面向切面编程(AOP)通过提供另一种思考程序结构的方式来补充面向对象编程(OOP). OOP中模块化的关键单元是类,而在AOP中,模块化单元是方面. AOP(Aspect Oriented Program) 面向切面编程 在面向切面编程的思想里面,把功能分为核心业务功能和周边功能. 核心业务,比如登陆,增加数据,删除数据都叫核心业务 周边功能,比如性能统计,日志,事务管理等等 周边功能在 Spring Boot 的面向切面编程AOP思想里,即被定义为切面 在面向切

Spring Boot AOP之对请求的参数入参与返回结果进行拦截处理

Spring Boot AOP之对请求的参数入参与返回结果进行拦截处理 本文链接:https://blog.csdn.net/puhaiyang/article/details/78146620 本文链接:https://blog.csdn.net/puhaiyang/article/details/78146620 spring Aop切面中的@Before @Around等执行顺序与请求参数统一解码 https://www.cnblogs.com/newAndHui/p/11771035.h

Spring Boot 之日志记录

Spring Boot 之日志记录 Spring Boot 支持集成 Java 世界主流的日志库. 如果对于 Java 日志库不熟悉,可以参考:细说 Java 主流日志工具库 关键词: log4j, log4j2, logback, slf4j 日志格式 控制台输出 彩色打印 文件输出 日志级别 日志组 日志配置文件 Spring Boot 中的日志配置 源码 引申和引用 Spring Boot 内部日志全部使用 Commons Logging 记录,但保留底层日志实现.为 Java Util

【spring boot】8.spring boot的日志框架使用

在继续上一篇的Debug调试之后,把spring boot的日志框架使用情况逐步蚕食. ============================================================================================= 简介:spring boot的默认日志框架Logback SLF4J--Simple Logging Facade For Java,它是一个针对于各类Java日志框架的统一Facade抽象.Java日志框架众多--常用的有

spring boot shiro -权限管理

spring boot shiro -权限管理 定义 java最常用的框架有spring security 和Apache shiro,因为spring security 庞大和负责,一般使用都是Apache shiro. Apache shiro 是一个功能强大,灵活,开源的安全框架,它可以处理身份验证,授权,企业会话管理,加密等. shiro 易于理解和使用,一个好的框架 应该屏蔽复杂性,向外提供简单,直观的api,简化开发人员实行应用程序安全所发费的时间和精力. shiro 可以做什么:

Spring Boot系列——日志配置

日志,通常不会在需求阶段作为一个功能单独提出来,也不会在产品方案中看到它的细节.但是,这丝毫不影响它在任何一个系统中的重要的地位. 为了保证服务的高可用,发现问题一定要即使,解决问题一定要迅速,所以生产环境一旦出现问题,预警系统就会通过邮件.短信甚至电话的方式实施多维轰炸模式,确保相关负责人不错过每一个可能的bug. 预警系统判断疑似bug大部分源于日志.比如某个微服务接口由于各种原因导致频繁调用出错,此时调用端会捕获这样的异常并打印ERROR级别的日志,当该错误日志达到一定次数出现的时候,就会

Spring Boot AOP 简易操作日志管理

AOP (Aspect Oriented Programming) 面向切面编程. 业务有核心业务和边缘业务. 比如用户管理,菜单管理,权限管理,这些都属于核心业务. 比如日志管理,操作记录管理,这些都是边缘业务,可以统一的提出来. 尝试使用SpringBoot +AOP 提出操作记录业务. github aop_demo package com.lick.aspect.lang.annotation; import com.lick.aspect.lang.enums.BusinessType

Spring AOP日志管理

AOP的介绍 AOP(Aspect-OrientedProgramming,面向方面编程) AOP的几个概念 1.切面(Aspect):切面就是一个关注点的模块化,如事务管理.日志管理.权限管理等: 2.连接点(Joinpoint):程序执行时的某个特定的点,在Spring中就是一个方法的执行: 3.通知(Advice):通知就是在切面的某个连接点上执行的操作,也就是事务管理.日志管理等: 4.切入点(Pointcut):切入点就是描述某一类选定的连接点,也就是指定某一类要织入通知的方法: 5.