diff --git a/pom.xml b/pom.xml index 2d8e109..5282653 100644 --- a/pom.xml +++ b/pom.xml @@ -27,6 +27,10 @@ + + org.springframework.boot + spring-boot-starter-aop + org.springframework.boot spring-boot-starter-log4j2 diff --git a/src/main/java/com/app/config/ApplicationLogging.java b/src/main/java/com/app/config/ApplicationLogging.java new file mode 100644 index 0000000..40d10b3 --- /dev/null +++ b/src/main/java/com/app/config/ApplicationLogging.java @@ -0,0 +1,35 @@ +package com.app.config; + +import lombok.extern.log4j.Log4j2; +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.AfterReturning; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.aspectj.lang.annotation.Pointcut; +import org.springframework.stereotype.Component; + +@Component +@Aspect +@Log4j2 +public class ApplicationLogging { + + @Pointcut("within(com.app..*) && !within(com.app.config..*)") + public void applicationPackagePointcut() { + // Pointcut to capture all methods within the specified package + } + + @Before("applicationPackagePointcut()") + public void logMethodEntry(JoinPoint joinPoint) { + String methodName = joinPoint.getSignature().getName(); + String className = joinPoint.getTarget().getClass().getSimpleName(); + Object[] args = joinPoint.getArgs(); + log.info("Entering method: {}.{}() with arguments: {}", className, methodName, args); + } + + @AfterReturning(pointcut = "applicationPackagePointcut()", returning = "result") + public void logMethodExit(JoinPoint joinPoint, Object result) { + String methodName = joinPoint.getSignature().getName(); + String className = joinPoint.getTarget().getClass().getSimpleName(); + log.info("Exiting method: {}.{}() with result: {}", className, methodName, result); + } +}