This is an automated email from the ASF dual-hosted git repository.

dsoumis pushed a commit to branch 10.1.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit ae8e092e17cc2e0a6fd02ee7e5bb4d21de986894
Author: Dimitris Soumis <jimsou...@gmail.com>
AuthorDate: Tue Sep 9 14:12:17 2025 +0300

    Tweak LogCapture logic
---
 .../apache/catalina/startup/TomcatBaseTest.java    | 23 ++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

diff --git a/test/org/apache/catalina/startup/TomcatBaseTest.java 
b/test/org/apache/catalina/startup/TomcatBaseTest.java
index 8083bc0d03..91e2028ff1 100644
--- a/test/org/apache/catalina/startup/TomcatBaseTest.java
+++ b/test/org/apache/catalina/startup/TomcatBaseTest.java
@@ -954,6 +954,7 @@ public abstract class TomcatBaseTest extends 
LoggingBaseTest {
         protected final String[] loggerNames;
         protected final List<LogRecord> logRecords = 
Collections.synchronizedList(new ArrayList<>());
         protected final Map<Logger, Level> previousLevelsOfLoggersMap = new 
IdentityHashMap<>();
+        private volatile boolean installed = false;
         protected final Handler handler = new Handler() {
             @Override
             public void publish(LogRecord record) {
@@ -975,11 +976,14 @@ public abstract class TomcatBaseTest extends 
LoggingBaseTest {
         }
 
         public void attach() {
-            for (String name : loggerNames) {
-                Logger logger = Logger.getLogger(name);
-                previousLevelsOfLoggersMap.put(logger, logger.getLevel());
-                logger.addHandler(handler);
-                logger.setLevel(level);
+            if (!installed) {
+                for (String name : loggerNames) {
+                    Logger logger = Logger.getLogger(name);
+                    previousLevelsOfLoggersMap.put(logger, logger.getLevel());
+                    logger.addHandler(handler);
+                    logger.setLevel(level);
+                }
+                installed = true;
             }
         }
 
@@ -1029,15 +1033,18 @@ public abstract class TomcatBaseTest extends 
LoggingBaseTest {
      * CONFIGURE_START phase of a {@link Context}.
      */
     public static class WebappLogCapture extends LogCapture implements 
LifecycleListener {
-        private volatile boolean installed = false;
+        private String lifecycleEvent = Lifecycle.CONFIGURE_START_EVENT;
+        public WebappLogCapture(String lifecycleEvent, Level level, String... 
loggerNames) {
+            this(level, loggerNames);
+            this.lifecycleEvent = lifecycleEvent;
+        }
         public WebappLogCapture(Level level, String... loggerNames) {
             super(level, loggerNames);
         }
 
         @Override
         public void lifecycleEvent(LifecycleEvent event) {
-            if (Lifecycle.CONFIGURE_START_EVENT.equals(event.getType()) && 
!installed) {
-                installed = true;
+            if (this.lifecycleEvent.equals(event.getType())) {
                 this.attach();
             }
         }


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to