SpringBoot用SpringAOP实现页面访问日志功能
每一个页面写请求日志太麻烦了,用AOP很方便的实现日志记录功能
@Aspect @Component public class LogAspect { private final static Logger LOGGER = LoggerFactory.getLogger(LogAspect.class); @Pointcut("execution(public * com.bao.cms.controller..*.*(..))") public void controllerMethod() { } @Before("controllerMethod()") public void LogRequestInfo(JoinPoint joinPoint) throws Exception { ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = attributes.getRequest(); StringBuffer requestLog = new StringBuffer(); requestLog.append("request:") .append("URL = {" + request.getRequestURI() + "},\t") .append("HTTP_METHOD = {" + request.getMethod() + "},\t") .append("IP = {" + request.getRemoteAddr() + "},\t") .append("CLASS_METHOD = {" + joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName() + "},\t"); if(joinPoint.getArgs().length == 0) { requestLog.append("ARGS = {} "); } else { requestLog.append("ARGS = " + new ObjectMapper().setSerializationInclusion(JsonInclude.Include.NON_NULL) .writeValueAsString(joinPoint.getArgs()[0]) + ""); } LOGGER.info(requestLog.toString()); } }
参考