11package com .example .Jinus .monitor ;
22
3+ import lombok .extern .slf4j .Slf4j ;
34import org .apache .catalina .connector .Connector ;
45import org .apache .coyote .ProtocolHandler ;
56import org .apache .coyote .AbstractProtocol ;
1213import java .util .concurrent .Executor ;
1314
1415@ Component
16+ @ Slf4j
1517public class TomcatThreadMonitor {
1618
1719 private final ServletWebServerApplicationContext context ;
@@ -20,7 +22,7 @@ public TomcatThreadMonitor(ServletWebServerApplicationContext context) {
2022 this .context = context ;
2123 }
2224
23- @ Scheduled (fixedRate = 1000 ) // 10초마다 출력
25+ @ Scheduled (fixedRateString = "${monitor.pool.status.rate.ms:60000}" ) // 상태 출력 주기 (기본 1분)
2426 public void logTomcatThreadPoolStatus () {
2527 if (context .getWebServer () instanceof TomcatWebServer tomcatWebServer ) {
2628 Connector connector = tomcatWebServer .getTomcat ().getConnector ();
@@ -36,10 +38,8 @@ public void logTomcatThreadPoolStatus() {
3638 long taskCount = threadPoolExecutor .getTaskCount ();
3739 long completedTaskCount = threadPoolExecutor .getCompletedTaskCount ();
3840
39- System .out .printf (
40- "[Tomcat 스레드] MaxPoolSize: %d, PoolSize: %d, 활성: %d, TaskCount: %d, 완료: %d%n" ,
41- max , poolSize , active , taskCount , completedTaskCount
42- );
41+ log .info ("[Tomcat 스레드] MaxPoolSize: {}, PoolSize: {}, 활성: {}, TaskCount: {}, 완료: {}" ,
42+ + max , poolSize , active , taskCount , completedTaskCount );
4343 }
4444 }
4545 }
0 commit comments