package pl.com.bottega.documentmanagement.infrastructure; import org.apache.log4j.Logger; import org.aspectj.lang.ProceedingJoinPoint; import org.springframework.stereotype.Component; import java.util.Date; /** * Created by maciuch on 09.07.16. */ @Component public class ProfilingAspect { public Object profile(ProceedingJoinPoint proceedingJoinPoint) throws Throwable { Date startTime = new Date(); //call target method Object returnValue = proceedingJoinPoint.proceed(); Date endTime = new Date(); long time = endTime.getTime() - startTime.getTime(); String msg = "Class: " + proceedingJoinPoint.getTarget().getClass().getName() + ", Method: " + proceedingJoinPoint.getSignature().getName() + ", Processing time: " + time + "ms"; Logger.getLogger(ProfilingAspect.class).info(msg); // return target method return value return returnValue; } }