You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by pk...@apache.org on 2023/09/08 14:41:12 UTC

[logging-log4j2] branch 2.x updated (37cca23c19 -> 78233104b4)

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

pkarwasz pushed a change to branch 2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git


    from 37cca23c19 Bump com.github.tomakehurst:wiremock-jre8 from 2.35.0 to 2.35.1 (#1781)
     new 6983e119f1 Extend `ListStatusListener` logging range
     new 78233104b4 Add more logging for `JeroMqAppenderTest` on Windows

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../log4j/test/junit/StatusLoggerExtension.java    | 28 +++++++++++++++++-----
 .../appender/mom/jeromq/JeroMqAppenderTest.java    | 20 ++++++++++++++++
 2 files changed, 42 insertions(+), 6 deletions(-)


[logging-log4j2] 01/02: Extend `ListStatusListener` logging range

Posted by pk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

pkarwasz pushed a commit to branch 2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit 6983e119f10fde8566e82ed5f97a4c61874e8e94
Author: Piotr P. Karwasz <pi...@karwasz.org>
AuthorDate: Fri Sep 8 16:27:30 2023 +0200

    Extend `ListStatusListener` logging range
    
    This extends the range of the status messages stored by
    `ListStatusListener` to include also those that are sent during the
    initialization phase of the entire test.
    
    This is necessary to deal with classes annotated with
    `@LoggerContextSource`.
    
    Part of #1776
---
 .../log4j/test/junit/StatusLoggerExtension.java    | 28 +++++++++++++++++-----
 1 file changed, 22 insertions(+), 6 deletions(-)

diff --git a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/StatusLoggerExtension.java b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/StatusLoggerExtension.java
index 0452d63bd8..cdbc220b49 100644
--- a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/StatusLoggerExtension.java
+++ b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/StatusLoggerExtension.java
@@ -26,6 +26,7 @@ import org.apache.logging.log4j.status.StatusConsoleListener;
 import org.apache.logging.log4j.status.StatusData;
 import org.apache.logging.log4j.status.StatusLogger;
 import org.apache.logging.log4j.test.ListStatusListener;
+import org.junit.jupiter.api.extension.BeforeAllCallback;
 import org.junit.jupiter.api.extension.BeforeEachCallback;
 import org.junit.jupiter.api.extension.ExtensionContext;
 import org.junit.jupiter.api.extension.ExtensionContext.Store.CloseableResource;
@@ -34,7 +35,7 @@ import org.junit.jupiter.api.extension.ParameterResolutionException;
 import org.junit.jupiter.api.extension.TestExecutionExceptionHandler;
 
 class StatusLoggerExtension extends TypeBasedParameterResolver<ListStatusListener>
-        implements BeforeEachCallback, TestExecutionExceptionHandler {
+        implements BeforeAllCallback, BeforeEachCallback, TestExecutionExceptionHandler {
 
     private static final StatusLogger LOGGER = StatusLogger.getLogger();
     private static final StatusConsoleListener CONSOLE_LISTENER = new StatusConsoleListener(Level.ALL);
@@ -44,9 +45,21 @@ class StatusLoggerExtension extends TypeBasedParameterResolver<ListStatusListene
         super(ListStatusListener.class);
     }
 
+    @Override
+    public void beforeAll(ExtensionContext context) throws Exception {
+        // Stores the per-class status listener to catch the messages caused by other
+        // `beforeAll` methods and extensions.
+        final ListStatusListenerHolder holder = new ListStatusListenerHolder(context, null);
+        ExtensionContextAnchor.setAttribute(KEY, holder, context);
+    }
+
     @Override
     public void beforeEach(final ExtensionContext context) throws Exception {
-        final ListStatusListenerHolder holder = new ListStatusListenerHolder(context);
+        // Retrieves the per-class status listener
+        final ListStatusListenerHolder parentHolder = ExtensionContextAnchor.getAttribute(KEY,
+                ListStatusListenerHolder.class, context);
+        final ListStatusListener parent = parentHolder != null ? parentHolder.getStatusListener() : null;
+        final ListStatusListenerHolder holder = new ListStatusListenerHolder(context, parent);
         ExtensionContextAnchor.setAttribute(KEY, holder, context);
     }
 
@@ -69,8 +82,8 @@ class StatusLoggerExtension extends TypeBasedParameterResolver<ListStatusListene
 
         private final ListStatusListener statusListener;
 
-        public ListStatusListenerHolder(final ExtensionContext context) {
-            this.statusListener = new JUnitListStatusListener(context);
+        public ListStatusListenerHolder(final ExtensionContext context, final ListStatusListener parent) {
+            this.statusListener = new JUnitListStatusListener(context, parent);
             LOGGER.registerListener(statusListener);
         }
 
@@ -88,10 +101,12 @@ class StatusLoggerExtension extends TypeBasedParameterResolver<ListStatusListene
     private static class JUnitListStatusListener implements ListStatusListener {
 
         private final ExtensionContext context;
+        private final ListStatusListener parent;
         private final ArrayList<StatusData> statusData = new ArrayList<>();
 
-        public JUnitListStatusListener(final ExtensionContext context) {
+        public JUnitListStatusListener(final ExtensionContext context, final ListStatusListener parent) {
             this.context = context;
+            this.parent = parent;
         }
 
         @Override
@@ -116,7 +131,8 @@ class StatusLoggerExtension extends TypeBasedParameterResolver<ListStatusListene
         @Override
         public Stream<StatusData> getStatusData() {
             synchronized (statusData) {
-                return ((List<StatusData>) statusData.clone()).stream();
+                final List<StatusData> clone = (List<StatusData>) statusData.clone();
+                return parent != null ? Stream.concat(parent.getStatusData(), clone.stream()) : clone.stream();
             }
         }
 


[logging-log4j2] 02/02: Add more logging for `JeroMqAppenderTest` on Windows

Posted by pk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

pkarwasz pushed a commit to branch 2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit 78233104b45fe4f87ddadebe513527b3ef2c98f2
Author: Piotr P. Karwasz <pi...@karwasz.org>
AuthorDate: Fri Sep 8 16:40:48 2023 +0200

    Add more logging for `JeroMqAppenderTest` on Windows
    
    The reason behind random Windows failure for this test are not clear
    yet.
    
    Related to #1568
---
 .../core/appender/mom/jeromq/JeroMqAppenderTest.java | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppenderTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppenderTest.java
index d501f64b05..73cb8daa9c 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppenderTest.java
+++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppenderTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.logging.log4j.core.appender.mom.jeromq;
 
+import java.io.Serializable;
 import java.util.List;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
@@ -24,7 +25,10 @@ import java.util.concurrent.TimeUnit;
 
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.ThreadContext;
+import org.apache.logging.log4j.core.Layout;
+import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.core.filter.AbstractFilter;
 import org.apache.logging.log4j.core.test.junit.LoggerContextSource;
 import org.apache.logging.log4j.core.test.junit.Named;
 import org.apache.logging.log4j.core.util.ExecutorServices;
@@ -67,6 +71,7 @@ public class JeroMqAppenderTest {
     @Test
     public void testClientServer(@Named(APPENDER_NAME) final JeroMqAppender appender, final LoggerContext ctx)
             throws Exception {
+        addLoggingFilter(appender);
         final Logger logger = ctx.getLogger(getClass());
         final int expectedReceiveCount = 3;
         final String endpoint = getTcpEndpoint(appender);
@@ -104,6 +109,7 @@ public class JeroMqAppenderTest {
     @Test
     public void testMultiThreadedServer(@Named(APPENDER_NAME) final JeroMqAppender appender, final LoggerContext ctx)
             throws Exception {
+        addLoggingFilter(appender);
         final Logger logger = ctx.getLogger(getClass());
         final int nThreads = 10;
         final int expectedReceiveCount = 2 * nThreads;
@@ -154,6 +160,7 @@ public class JeroMqAppenderTest {
 
     @Test
     public void testServerOnly(@Named(APPENDER_NAME) final JeroMqAppender appender, final LoggerContext ctx) {
+        addLoggingFilter(appender);
         final Logger logger = ctx.getLogger(getClass());
         appender.resetSendRcs();
         logger.info("Hello");
@@ -191,4 +198,17 @@ public class JeroMqAppenderTest {
         LOGGER.info("Starting ZMonitor for JeroMqAppender {}.", appender.getName());
         return monitor;
     }
+
+    private void addLoggingFilter(final JeroMqAppender appender) {
+        final Layout<? extends Serializable> layout = appender.getLayout();
+        appender.addFilter(new AbstractFilter() {
+
+            @Override
+            public Result filter(LogEvent event) {
+                LOGGER.info("JeroMqAppender sent a message: {}.", layout.toSerializable(event));
+                return Result.NEUTRAL;
+            }
+
+        });
+    }
 }