From 0f928fb6815a78a812b5c09e58568016371d95d6 Mon Sep 17 00:00:00 2001 From: Faiz Akram <156657523+faizorg@users.noreply.github.com> Date: Tue, 18 Feb 2025 20:39:34 +0530 Subject: [PATCH] feat: Add application-wide logging using Spring AOP --- pom.xml | 4 +++ .../com/app/config/ApplicationLogging.java | 35 +++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 src/main/java/com/app/config/ApplicationLogging.java 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); + } +}