diff --git a/src/main/java/org/springframework/samples/petclinic/LoggingAspect.java b/src/main/java/org/springframework/samples/petclinic/LoggingAspect.java index ba088a772..95fcbbdc4 100644 --- a/src/main/java/org/springframework/samples/petclinic/LoggingAspect.java +++ b/src/main/java/org/springframework/samples/petclinic/LoggingAspect.java @@ -1,27 +1,34 @@ package org.springframework.samples.petclinic; - +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; -import org.aspectj.lang.annotation.Before; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; @Aspect @Component public class LoggingAspect { + + private static final Logger logger = LoggerFactory.getLogger(LoggingAspect.class); - //Pointcut: all methods in package "model" - @Before("execution(* model.BaseEntity.getId())") - public void logBeforeMethod(){ - System.out.println("model.BaseEntity.getId..."); - } - - @Before("execution(* model.NamedEntity.getName())") - public void logBeforeMethod2(){ - System.out.println("model.NamedEntity.getName..."); - } - - @Before("execution(* model.Person.*())") - public void logBeforeMethod3(){ - System.out.println("model.Person*"); - } + @Around("execution(* org.springframework.samples.petclinic..*.*(..))") + public Object logMethodExecution(ProceedingJoinPoint joinPoint) throws Throwable { + String methodName = joinPoint.getSignature().getName(); + String className = joinPoint.getTarget().getClass().getSimpleName(); + + logger.info("Начало выполнения метода: {}.{}", className, methodName); + + long startTime = System.currentTimeMillis(); + Object result = null; + try { + result = joinPoint.proceed(); + return result; + } finally { + long endTime = System.currentTimeMillis(); + logger.info("Завершение выполнения метода: {}.{} (время выполнения: {} мс)", + className, methodName, (endTime - startTime)); + } + } }