You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@axis.apache.org by ve...@apache.org on 2020/12/29 19:54:37 UTC

[axis-axis2-java-core] branch master updated: AXIS2-5993: Fix TestKitLogManager

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

veithen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/axis-axis2-java-core.git


The following commit(s) were added to refs/heads/master by this push:
     new c4a2548  AXIS2-5993: Fix TestKitLogManager
c4a2548 is described below

commit c4a254875bbb46742af10a12f4ca1935de7f6714
Author: Andreas Veithen <an...@gmail.com>
AuthorDate: Tue Dec 29 19:50:19 2020 +0000

    AXIS2-5993: Fix TestKitLogManager
    
    The code in that class got badly broken by the changes in AXIS2-5993:
    - Log files are no longer closed.
    - The appender writes to a StringWriter instead of the intended log
    file, effectively blackholing log messages.
    - The dependency on log4j-jcl is missing, causing log messages emitted
    via commons-logging to be sent to java.util.logging instead of Log4j.
---
 modules/transport/testkit/pom.xml                  |  4 +++
 .../transport/testkit/util/TestKitLogManager.java  | 41 +++++++++++-----------
 2 files changed, 25 insertions(+), 20 deletions(-)

diff --git a/modules/transport/testkit/pom.xml b/modules/transport/testkit/pom.xml
index 5072c68..8f297ab 100644
--- a/modules/transport/testkit/pom.xml
+++ b/modules/transport/testkit/pom.xml
@@ -90,6 +90,10 @@
             <artifactId>log4j-core</artifactId>
             <version>2.14.0</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-jcl</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/modules/transport/testkit/src/main/java/org/apache/axis2/transport/testkit/util/TestKitLogManager.java b/modules/transport/testkit/src/main/java/org/apache/axis2/transport/testkit/util/TestKitLogManager.java
index 0aa35c1..98fc53f 100644
--- a/modules/transport/testkit/src/main/java/org/apache/axis2/transport/testkit/util/TestKitLogManager.java
+++ b/modules/transport/testkit/src/main/java/org/apache/axis2/transport/testkit/util/TestKitLogManager.java
@@ -21,10 +21,9 @@ package org.apache.axis2.transport.testkit.util;
 
 import java.io.File;
 import java.io.FileOutputStream;
-import java.io.StringWriter;
 import java.io.IOException;
 import java.io.OutputStream;
-import java.nio.charset.StandardCharsets;
+import java.io.OutputStreamWriter;
 import java.util.LinkedList;
 import java.util.List;
 
@@ -32,7 +31,6 @@ import org.apache.axis2.transport.testkit.tests.ManagedTestCase;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 
-import org.apache.logging.log4j.core.Appender;
 import org.apache.logging.log4j.core.appender.WriterAppender;
 import org.apache.logging.log4j.core.config.Configuration;
 import org.apache.logging.log4j.core.Logger;
@@ -45,23 +43,27 @@ public class TestKitLogManager {
     
     private final File logDir;
     private File testCaseDir;
-    private Appender appender;
+    private WriterAppender appender;
     private int sequence;
     private List<OutputStream> logs;
 
-    private static final Logger logger =
-      (Logger) LogManager.getLogger(TestKitLogManager.class);
- 
-    
     private TestKitLogManager() {
         logDir = new File("target" + File.separator + "testkit-logs");
     }
     
     public void setTestCase(ManagedTestCase testCase) throws IOException {
+        Logger rootLogger = (Logger) LogManager.getRootLogger();
         if (appender != null) {
-            ((Logger) LogManager.getRootLogger()).removeAppender(appender);
+            rootLogger.removeAppender(appender);
+            appender.stop();
             appender = null;
         }
+        if (logs != null) {
+            for (OutputStream log : logs) {
+                IOUtils.closeQuietly(log);
+            }
+            logs = null;
+        }
         if (testCase == null) {
             testCaseDir = null;
         } else {
@@ -73,15 +75,15 @@ public class TestKitLogManager {
             LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
             Configuration config = ctx.getConfiguration();
 
-            StringWriter output = new StringWriter();
-            appender = WriterAppender.newBuilder().setTarget(output).setName("debug").setLayout(PatternLayout.newBuilder().withPattern(PatternLayout.TTCC_CONVERSION_PATTERN).build()).setConfiguration(config).build();
+            appender = WriterAppender.newBuilder()
+                    .setTarget(new OutputStreamWriter(createLog("debug")))
+                    .setName("debug")
+                    .setLayout(PatternLayout.newBuilder().withPattern(PatternLayout.TTCC_CONVERSION_PATTERN).build())
+                    .setConfiguration(config)
+                    .build();
 
-            if (appender != null) {
-                if (!appender.isStarted()) {
-                    appender.start();
-                }
-                config.addAppender(appender);
-            }
+            appender.start();
+            rootLogger.addAppender(appender);
         }
     }
     
@@ -91,10 +93,9 @@ public class TestKitLogManager {
 
     public synchronized OutputStream createLog(String name) throws IOException {
         testCaseDir.mkdirs();
-        OutputStream log = new FileOutputStream(new File(testCaseDir, StringUtils.leftPad(String.valueOf(sequence++),
-2, '0') + "-" + name + ".log"));
+        OutputStream log = new FileOutputStream(
+                new File(testCaseDir, StringUtils.leftPad(String.valueOf(sequence++), 2, '0') + "-" + name + ".log"));
         logs.add(log);
         return log;
     }
-    
 }