1.pom.xml文件
<!-- spring aop --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> <version>1.3.6.RELEASE</version> </dependency>
2.登录日志
@Aspect @Component public class AspectInterceptor { @Autowired LoginLogService loginLogService; @Autowired OperateLogService operateLogService; @Autowired UserService userService; @Autowired SqlSessionFactory sqlSessionFactory; private Logger log = Logger.getLogger(AspectInterceptor.class); ThreadLocal<Long> startTime = new ThreadLocal<>(); @Pointcut("execution(public * com.test.blue.*Controller.login(..))")//断点位置 public void loginWebLog() { } @Pointcut("execution(public * com.test.blue.service.Services.*(..))")//断点位置 public void operateWebLog() { } /** * 登录日志 */ @Before("loginWebLog()") public void doBeforeLogin() { //当前的毫秒时间 startTime.set(System.currentTimeMillis()); } /** * 登录日志 * * @param joinPoint * @param returnValue */ @AfterReturning(returning = "returnValue", pointcut = "loginWebLog()") public void doAfterReturning(JoinPoint joinPoint, Object returnValue) { long elsTime = (System.currentTimeMillis() - startTime.get()) / 1000; if (returnValue.equals(true)) { //returnValue为true,表示登录成功.记录登录日志 ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = attributes.getRequest(); String sessionId = request.getRequestedSessionId(); LoginUser loginUser = (LoginUser) request.getSession().getAttribute(sessionId); LoginLog loginLog = new LoginLog(); loginLog.setLoginIp(ServletUtil.getRemortIP(request)); loginLog.setRemark("登录"); loginLog.setLoginType(1); loginLog.setUserName(loginUser.userId); loginLog.setLoginTime(new Date()); loginLog.setUserAgent(request.getHeader("user-agent")); loginLog.setElapsedTime(elsTime); loginLogService.insert(loginLog); } } /** * 操作日志 */ @Before("operateWebLog())") public void operateBeforeOperate(JoinPoint joinPoint) { String method = joinPoint.getSignature().getName(); if (method.equals("insert") || method.equals("delete") || method.equals("update")) { startTime.set(System.currentTimeMillis()); ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = requestAttributes.getRequest(); String className = joinPoint.getTarget().getClass().toString(); if (className.equals("OperateLog") || className.equals("LoginLog")) { return; } if (method.equals("insert")) { String classTypeName = className.substring(className.lastIndexOf(".") + 1, className.lastIndexOf("Service")); //打印请求内容 String operateTable = classTypeName.substring(0, 1).toLowerCase() + classTypeName.substring(1); System.out.println("===============请求内容==============="); System.out.println("请求地址:" + request.getRequestURL().toString()); System.out.println("请求方式:" + request.getMethod()); System.out.println("请求方法:" + joinPoint.getSignature().getName()); System.out.println("请求类方法:" + joinPoint.getSignature()); System.out.println("请求类方法参数:" + JSON.toJSONString(joinPoint.getArgs()[0])); // getInsertSql(() joinPoint.getArgs()[0], classTypeName, operateTable); System.out.println("===============请求内容==============="); } else if (method.equals("delete")) { } else if (method.equals("update")) { } else { System.out.println(method); } } } @AfterReturning(returning = "returnValue", pointcut = "operateWebLog()") public void operateAfterReturning(JoinPoint joinPoint, Object returnValue) { String method = joinPoint.getSignature().getName(); if (method.equals("insert") || method.equals("delete") || method.equals("update")) { ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = requestAttributes.getRequest(); long elTime = (System.currentTimeMillis() - startTime.get()) / 1000; String className = joinPoint.getTarget().getClass().toString(); String classTypeName = className.substring(className.lastIndexOf(".") + 1, className.lastIndexOf("Service")); if (classTypeName.contains("OperateLog") || classTypeName.contains("LoginLog")) { return; } String operateTable = classTypeName.substring(0, 1).toLowerCase() + classTypeName.substring(1); String sessionId = request.getRequestedSessionId(); LoginUser loginUser = (LoginUser) request.getSession().getAttribute(sessionId); OperateLog operateLog = new OperateLog(); operateLog.setUserName(loginUser.userId); operateLog.setElapsedTime(elTime); operateLog.setExecType(method); operateLog.setCreateTime(new Date()); operateLog.setExecParam(JSON.toJSONString(joinPoint.getArgs()[0])); operateLog.setExecTable(operateTable); operateLog.setOperateIp(ServletUtil.getRemortIP(request)); if (method.equals("insert")) { String sql = "insert into "+ operateTable+" " +operateLog.getExecParam(); operateLog.setExecSql(sql);System.out.println("--------------返回内容----------------"); System.out.println("Response内容:" + JSON.toJSONString(returnValue)); System.out.println("--------------返回内容----------------"); operateLogService.insert(operateLog); } else if (method.equals("delete")) { String sql = "delete from "+ operateTable+" where id =" +operateLog.getExecParam(); operateLog.setExecSql(sql); operateLogService.insert(operateLog); System.out.println("--------------返回内容----------------"); System.out.println("Response内容:" + JSON.toJSONString(returnValue)); System.out.println("--------------返回内容----------------"); } else if (method.equals("update")) { String sql = "update from "+ operateTable+" values " +operateLog.getExecParam(); operateLog.setExecSql(sql); operateLogService.insert(operateLog); System.out.println("Response内容:" + JSON.toJSONString(returnValue)); } else { System.out.println(method); } } } }