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);
+ }
+}