Springであるメソッドがリクエストされてからレスポンスを返却するまでの経過時間を計測したいときに使えるのがPerformanceMonitorInterceptorです。
コード
penguin.controller.ui.PictureControllerクラスのすべてのメソッドが実行されたときに経過時間を出力する設定
package penguin.config; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.springframework.aop.Advisor; import org.springframework.aop.interceptor.PerformanceMonitorInterceptor; import org.springframework.aop.support.DefaultPointcutAdvisor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.EnableAspectJAutoProxy; @Configuration @EnableAspectJAutoProxy @Aspect public class PictureControllerPerfLogConfig { @Bean public PerformanceMonitorInterceptor performanceMonitorInterceptor() { return new PerformanceMonitorInterceptor(); } @Bean public Advisor pictureControllerMonitorAdvisor(PerformanceMonitorInterceptor performanceMonitorInterceptor) { AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut(); pointcut.setExpression("execution(public * penguin.controller.ui.PictureController.*(..))"); return new DefaultPointcutAdvisor(pointcut, performanceMonitorInterceptor); } }
PerformanceMonitorInterceptorはTRACEレベルでログを出力するので、ログレベルの設定が必要になります。
application.propertiesファイルに以下の内容を追加します。
logging.level.org.springframework.aop.interceptor.PerformanceMonitorInterceptor=TRACE
出力内容
★の部分が追加されました。
2020-10-04 23:07:39.964 INFO 7792 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor' 2020-10-04 23:07:40.048 INFO 7792 --- [ main] o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page template: index 2020-10-04 23:07:40.835 INFO 7792 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path '/garden' 2020-10-04 23:07:40.838 INFO 7792 --- [ main] penguin.Application : Started Application in 5.598 seconds (JVM running for 6.883) 2020-10-04 23:07:44.403 INFO 7792 --- [nio-8080-exec-1] o.a.c.c.C.[.[localhost].[/garden] : Initializing Spring DispatcherServlet 'dispatcherServlet' 2020-10-04 23:07:44.709 TRACE 7792 --- [nio-8080-exec-1] o.s.a.i.PerformanceMonitorInterceptor : StopWatch 'penguin.controller.ui.PictureController.list': running time = 258040800 ns ★
以上