package com.farriver.bwf.web.initializer.aop; import jakarta.servlet.http.HttpServletRequest; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.slf4j.Logger; import org.slf4j.LoggerFactory; 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 java.util.Arrays; @Aspect @Component public class AuditTrailAop { private final Logger logger = LoggerFactory.getLogger(AuditTrailAop.class); @Pointcut("execution(public * com.farriver.bwf.web.controller..*.*(..))") public void ControllerLog() { } @Before("ControllerLog()") public void logBeforeController(JoinPoint joinPoint) { LogRecord(joinPoint); } @After("ControllerLog()") public void logAfterController(JoinPoint joinPoint) { LogRecord(joinPoint); } private void LogRecord(JoinPoint joinPoint) { RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); if(requestAttributes==null) return; HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest(); logger.debug("URL: " + request.getRequestURL().toString()); logger.debug("HTTP_METHOD: " + request.getMethod()); logger.debug("IP: " + request.getRemoteAddr()); logger.debug("ARGS: " + Arrays.toString(joinPoint.getArgs())); logger.debug("CLASS_METHOD : " + joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName()); logger.debug("TARGET: " + joinPoint.getTarget()); logger.debug("THIS: " + joinPoint.getThis()); } }