grails 3 aop 记录操作日志

本文详细介绍了如何在Grails 3应用中使用AOP(面向切面编程)来记录操作日志。首先,通过注入Spring Boot AOP依赖来启用日志功能。接着,在resources.groovy文件中配置映射路径,确保AOP拦截到正确的目标函数。最后,配置需要被记录的日志函数,实现透明的日志记录。
摘要由CSDN通过智能技术生成

第一步 注入sprootbootAOP依赖

    // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-aop
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-aop', version: '2.2.6.RELEASE'

第二步 在ressoutces.groovy 配置映射路径

beans = {
  xmlns aop:"http://www.springframework.org/schema/aop"
  dataLogAop(DataLogAop)
  aop.config("proxy-target-class":true) {}


}

第三 配置需要记录的函数名

package rzj.iot.cloud.aop

import org.aspectj.lang.JoinPoint
import org.aspectj.lang.annotation.Aspect
import org.aspectj.lang.annotation.Before
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Component
import org.springframework.web.context.request.RequestContextHolder
import org.springframework.web.context.request.ServletRequestAttributes
import rzj.iot.cloud.system.DataLogService
import rzj.iot.cloud.utils.HttpWebUtilsController

import javax.servlet.http.HttpServletRequest
import javax.servlet.http.HttpServletResponse
import javax.servlet.http.HttpSession

@Aspect
@Component
class DataLogAop {

  private final static Logger logger = LoggerFactory.getLogger(DataLogAop.class);
  @Autowired
   DataLogService dataLogService;
/**
 * 样例
 * @param joinPoint
 */
  @Pointcut("execution(* rzj.iot.cloud.dhapp.AccountOpeningController.*(..))")
  public void test(){

 }

  @Before("test()")
  public void doBefore(JoinPoint joinPoint){

   //获取request
   HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
   //获取response
   HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();

    HttpSession session = HttpWebUtilsController.getHttpSession() as HttpSession
  println session
   System.out.println("url: {}"+ request.getRequestURL());
   System.out.println("ip: {}" + request.getRemoteHost());
 System.out.println("port: {}" + request.getRemotePort());
  System.out.println("method: {}" + request.getMethod());
 System.out.println("parameterMap:{}"+request.getParameterMap());

   获取类和方法
    System.out.println("class method: {}" + joinPoint.getSignature().getDeclaringTypeName()+"."+joinPoint.getSignature().getName());
    //获取参数
   System.out.println("args: {}" + joinPoint.getArgs());
    System.out.println(joinPoint.getArgs());
   System.out.println("=========doBefore===========");
  }

  @After("test()")
  public void doAfter(){
    System.out.println("=========after===========");
  }
  @AfterReturning(returning = "object", pointcut = "test()")
  public void afterReturn(Object object){
    System.out.println(object);
   System.out.println("===============AfterReturning=============");
  }


}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值