SysLoggerAspect.java 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package com.diagbot.aop;
  2. import com.diagbot.annotation.SysLogger;
  3. import com.diagbot.entity.SysLog;
  4. import com.diagbot.enums.SysTypeEnum;
  5. import com.diagbot.rabbit.MySender;
  6. import com.diagbot.util.GsonUtil;
  7. import com.diagbot.util.HttpUtils;
  8. import com.diagbot.util.StringUtil;
  9. import com.diagbot.util.UserUtils;
  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 += GsonUtil.toJson(o);
  51. }
  52. if (!StringUtil.isEmpty(params)) {
  53. sysLog.setParams(params);
  54. }
  55. //设置IP地址
  56. sysLog.setIp(HttpUtils.getIpAddress());
  57. //用户名
  58. String username = UserUtils.getCurrentPrinciple();
  59. if (!StringUtil.isEmpty(username)) {
  60. sysLog.setUsername(username);
  61. }
  62. sysLog.setGmtCreate(new Date());
  63. sysLog.setSysType(SysTypeEnum.KNOWLEDGEMAN_SERVICE.getKey());
  64. //保存系统日志
  65. mySender.outputLogSend(sysLog);
  66. }
  67. }