SysLoggerAspect.java 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package com.diagbot.aop;
  2. import com.alibaba.fastjson.JSON;
  3. import com.diagbot.annotation.SysLogger;
  4. import com.diagbot.entity.SysLog;
  5. import com.diagbot.facade.SysLogFacade;
  6. import com.diagbot.rabbit.MySender;
  7. import com.diagbot.util.HttpUtils;
  8. import com.diagbot.util.UserUtils;
  9. import org.apache.commons.lang.StringUtils;
  10. import org.aspectj.lang.JoinPoint;
  11. import org.aspectj.lang.annotation.Aspect;
  12. import org.aspectj.lang.annotation.Before;
  13. import org.aspectj.lang.annotation.Pointcut;
  14. import org.aspectj.lang.reflect.MethodSignature;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.stereotype.Component;
  17. import java.lang.reflect.Method;
  18. import java.util.Date;
  19. /**
  20. * @Description: 日志拦截切面
  21. * @author: gaodm
  22. * @time: 2018/8/2 13:36
  23. */
  24. @Aspect
  25. @Component
  26. public class SysLoggerAspect {
  27. @Autowired
  28. private MySender mySender;
  29. @Pointcut("@annotation(com.diagbot.annotation.SysLogger)")
  30. public void loggerPointCut() {
  31. }
  32. @Before("loggerPointCut()")
  33. public void saveSysLog(JoinPoint joinPoint) {
  34. MethodSignature signature = (MethodSignature) joinPoint.getSignature();
  35. Method method = signature.getMethod();
  36. SysLog sysLog = new SysLog();
  37. SysLogger sysLogger = method.getAnnotation(SysLogger.class);
  38. if(sysLogger != null){
  39. //注解上的描述
  40. sysLog.setOperation(sysLogger.value());
  41. }
  42. //请求的方法名
  43. String className = joinPoint.getTarget().getClass().getName();
  44. String methodName = signature.getName();
  45. sysLog.setMethod(className + "." + methodName + "()");
  46. //请求的参数
  47. Object[] args = joinPoint.getArgs();
  48. String params="";
  49. for(Object o:args){
  50. params+=JSON.toJSONString(o);
  51. }
  52. if(!StringUtils.isEmpty(params)) {
  53. sysLog.setParams(params);
  54. }
  55. //设置IP地址
  56. sysLog.setIp(HttpUtils.getIpAddress());
  57. //用户名
  58. String username = UserUtils.getCurrentPrinciple();
  59. if(!StringUtils.isEmpty(username)) {
  60. sysLog.setUsername(username);
  61. }
  62. sysLog.setGmtCreate(new Date());
  63. //保存系统日志
  64. mySender.outputLogSend(sysLog);
  65. }
  66. }