美文网首页
spring 日志切面 aspect 创建

spring 日志切面 aspect 创建

作者: 会弹琴的程序猿 | 来源:发表于2019-02-22 10:06 被阅读0次

    @Aspect

    @Component

    public class SysLogAspect {

    @Autowired

      private SysLogServicesysLogService;

      @Pointcut("@annotation(cn.makeid.common.annotation.SysLog)")

    public void logPointCut() {

    }

    @Around("logPointCut()")

    public Objectaround(ProceedingJoinPoint point)throws Throwable {

    long beginTime = System.currentTimeMillis();

          //执行方法

          Object result = point.proceed();

          //执行时长(毫秒)

          long time = System.currentTimeMillis() - beginTime;

          //保存日志

          saveSysLog(point, time);

          return result;

      }

    private void saveSysLog(ProceedingJoinPoint joinPoint, long time) {

    MethodSignature signature = (MethodSignature) joinPoint.getSignature();

          Method method = signature.getMethod();

          SysLogEntity sysLog =new SysLogEntity();

          SysLog syslog = method.getAnnotation(SysLog.class);

          if(syslog !=null){

    //注解上的描述

            sysLog.setOperation(syslog.value());

          }

    //请求的方法名

          String className = joinPoint.getTarget().getClass().getName();

          String methodName = signature.getName();

          sysLog.setMethod(className +"." + methodName +"()");

          //请求的参数

          Object[] args = joinPoint.getArgs();

          try{

    String params =new Gson().toJson(args[0]);

            sysLog.setParams(params);

          }catch (Exception e){

    }

    //获取request

          HttpServletRequest request = HttpContextUtils.getHttpServletRequest();

          //设置IP地址

          sysLog.setIp(IPUtils.getIpAddr(request));

          //用户名

          String username = ((SysUserEntity) SecurityUtils.getSubject().getPrincipal()).getUsername();

          sysLog.setUsername(username);

          sysLog.setTime(time);

          sysLog.setCreateDate(new Date());

          //保存系统日志

          sysLogService.insert(sysLog);

      }

    }

    相关文章

      网友评论

          本文标题:spring 日志切面 aspect 创建

          本文链接:https://www.haomeiwen.com/subject/ikjdyqtx.html