1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
| package com.xxxxxx.tools.client.config;
import org.apache.logging.log4j.Logger;
import java.util.Arrays; import java.util.Date; import java.util.Enumeration; import java.util.Map; import java.util.Map.Entry;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession;
import org.apache.logging.log4j.LogManager; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.AfterThrowing; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes;
import com.xxxxxx.tools.client.dao.PublicLogRepository; import com.xxxxxx.tools.client.pojo.model.PublicLog; import com.xxxxxx.tools.client.util.CommonUtil;
@Aspect @Component public class WebLogAspect { private Logger logger = LogManager.getLogger(this.getClass()); @Autowired private PublicLogRepository publicLogRepository; @Autowired private HttpServletRequest request; ThreadLocal<Long> startTime = new ThreadLocal<>(); @Pointcut("execution(public * com.xxxxxx.tools.client.web..*.*Controller.*(..))") public void webLog(){} @Before("webLog()") public void doBefore(JoinPoint joinPoint) throws Throwable { startTime.set(System.currentTimeMillis()); logger.info("URL : " + request.getRequestURL().toString()); logger.info("HTTP_METHOD : " + request.getMethod()); logger.info("IP : " + request.getRemoteAddr()+"========"+request.getRemoteUser()+"========"+request.getRequestedSessionId()); logger.info("CLASS_METHOD : " + joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName()); logger.info("ARGS : " + Arrays.toString(joinPoint.getArgs())); logger.info("START TIME : " + startTime.get()); }
@AfterReturning(returning = "ret", pointcut = "webLog()") public void doAfterReturning(JoinPoint point,Object ret) { logger.info("RESPONSE : " + ret); logger.info("SPEND TIME : " + (System.currentTimeMillis() - startTime.get())); PublicLog log = new PublicLog(request.getRequestURL().toString(), CommonUtil.getRemoteHost(request), new Date(startTime.get()), new Date(), System.currentTimeMillis() - startTime.get()+"",(String)request.getSession().getAttribute("sAMAccountName")); publicLogRepository.save(log); }
@AfterThrowing(pointcut="webLog()",throwing = "ex") public void afterThrowing(JoinPoint point,Exception ex) { try{ String message = ex.getMessage(); if(message.length()>800){ message=message.substring(0,800); } PublicLog log = new PublicLog(request.getRequestURL().toString(),CommonUtil.getRemoteHost(request), new Date(startTime.get()), new Date(), System.currentTimeMillis() - startTime.get()+"",message,(String)request.getSession().getAttribute("sAMAccountName")); publicLogRepository.save(log); }catch (Exception e) { e.printStackTrace(); } } }
|