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 2022/10/01 18:59:42 UTC

[logging-log4j2] 02/02: [LOG4J2-3587] Add default enterprise ID value

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

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

commit 0ca7b42092950198c8ff2104a72e242e9bd27884
Author: Piotr P. Karwasz <pi...@karwasz.org>
AuthorDate: Wed Sep 7 12:17:53 2022 +0200

    [LOG4J2-3587] Add default enterprise ID value
    
    Adds the correct default values on both the factory method and builder class and a test case to prevent regressions.
---
 .../log4j/core/layout/Rfc5424LayoutTest.java       | 38 ++++++++++++++++++++++
 .../log4j/core/appender/SyslogAppender.java        |  2 +-
 .../logging/log4j/core/layout/Rfc5424Layout.java   | 29 +++++++++++++----
 .../log4j/flume/appender/FlumeAppender.java        |  4 +--
 4 files changed, 64 insertions(+), 9 deletions(-)

diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/layout/Rfc5424LayoutTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/layout/Rfc5424LayoutTest.java
index aee0460aed..dede4c504b 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/layout/Rfc5424LayoutTest.java
+++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/layout/Rfc5424LayoutTest.java
@@ -20,13 +20,16 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Locale;
+import java.util.function.Function;
 
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.MarkerManager;
 import org.apache.logging.log4j.ThreadContext;
 import org.apache.logging.log4j.core.Appender;
+import org.apache.logging.log4j.core.Core;
 import org.apache.logging.log4j.core.Logger;
 import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.core.config.Configuration;
 import org.apache.logging.log4j.core.config.ConfigurationFactory;
 import org.apache.logging.log4j.core.net.Facility;
 import org.apache.logging.log4j.core.test.BasicConfigurationFactory;
@@ -36,6 +39,12 @@ import org.apache.logging.log4j.core.util.KeyValuePair;
 import org.apache.logging.log4j.core.util.ProcessIdUtil;
 import org.apache.logging.log4j.message.StructuredDataCollectionMessage;
 import org.apache.logging.log4j.message.StructuredDataMessage;
+import org.apache.logging.log4j.plugins.Node;
+import org.apache.logging.log4j.plugins.di.DI;
+import org.apache.logging.log4j.plugins.di.Injector;
+import org.apache.logging.log4j.plugins.di.Keys;
+import org.apache.logging.log4j.plugins.util.PluginNamespace;
+import org.apache.logging.log4j.plugins.util.PluginType;
 import org.apache.logging.log4j.status.StatusLogger;
 import org.apache.logging.log4j.test.junit.UsingAnyThreadContext;
 import org.apache.logging.log4j.util.LazyValue;
@@ -52,6 +61,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assertions.fail;
+import static org.assertj.core.api.Assertions.*;
 
 @UsingAnyThreadContext
 public class Rfc5424LayoutTest {
@@ -562,6 +572,34 @@ public class Rfc5424LayoutTest {
         }
     }
 
+    @Test
+    public void testLayoutBuilderDefaultValues() {
+        final Rfc5424Layout layout = new Rfc5424Layout.Rfc5424LayoutBuilder().build();
+        checkDefaultValues(layout);
+
+        final PluginNamespace corePlugins = ctx.getInjector().getInstance(Core.PLUGIN_NAMESPACE_KEY);
+        final PluginType<?> pluginType = corePlugins.get("Rfc5424Layout");
+        assertNotNull(pluginType);
+        final Node node = new Node(null, "Rfc5424Layout", pluginType);
+        node.getAttributes().put("name", "Rfc5242Layout");
+
+        final Injector injector = DI.createInjector()
+                .registerBinding(Keys.SUBSTITUTOR_KEY, Function::identity)
+                .registerBinding(Configuration.KEY, () -> ctx.getConfiguration());
+        final Object obj = injector.configure(node);
+        assertThat(obj).isInstanceOf(Rfc5424Layout.class);
+        checkDefaultValues((Rfc5424Layout) obj);
+    }
+
+    private void checkDefaultValues(final Rfc5424Layout layout) {
+        assertNotNull(layout);
+        assertEquals(Facility.LOCAL0, layout.getFacility());
+        assertEquals(String.valueOf(Rfc5424Layout.DEFAULT_ENTERPRISE_NUMBER), layout.getEnterpriseNumber());
+        assertEquals(true, layout.isIncludeMdc());
+        assertEquals(Rfc5424Layout.DEFAULT_MDCID, layout.getMdcId());
+        assertEquals(Rfc5424Layout.DEFAULT_ID, layout.getDefaultId());
+    }
+
     @ParameterizedTest
     @ValueSource(strings = { "123456789", "0", "2147483647", "123.45.6.78.9", "0.0.0.0.0.0.0.0.0.0.0.0.0.0" })
     void testLayoutBuilderValidEids(String eid) {
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java
index 14e36a4f5d..2c3e477585 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java
@@ -56,7 +56,7 @@ public class SyslogAppender extends SocketAppender {
         private String id;
 
         @PluginBuilderAttribute(value = "enterpriseNumber")
-        private String enterpriseNumber = Rfc5424Layout.DEFAULT_ENTERPRISE_NUMBER;
+        private String enterpriseNumber = String.valueOf(Rfc5424Layout.DEFAULT_ENTERPRISE_NUMBER);
 
         @PluginBuilderAttribute(value = "includeMdc")
         private boolean includeMdc = true;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/Rfc5424Layout.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/Rfc5424Layout.java
index 76830e4f86..bed7602c95 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/Rfc5424Layout.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/Rfc5424Layout.java
@@ -74,7 +74,7 @@ public final class Rfc5424Layout extends AbstractStringLayout {
     /**
      * The default example enterprise number from RFC5424.
      */
-    public static final String DEFAULT_ENTERPRISE_NUMBER = "32473";
+    public static final int DEFAULT_ENTERPRISE_NUMBER = 32473;
     /**
      * The default event id.
      */
@@ -617,7 +617,7 @@ public final class Rfc5424Layout extends AbstractStringLayout {
             // @formatter:off
             @PluginAttribute(value = "facility", defaultString = "LOCAL0") final Facility facility,
             @PluginAttribute("id") final String id,
-            @PluginAttribute(value = "enterpriseNumber", defaultInt = -1)
+            @PluginAttribute(value = "enterpriseNumber", defaultInt = DEFAULT_ENTERPRISE_NUMBER)
             final int enterpriseNumber,
             @PluginAttribute(value = "includeMDC", defaultBoolean = true) final boolean includeMDC,
             @PluginAttribute(value = "mdcId", defaultString = DEFAULT_MDCID) final String mdcId,
@@ -648,13 +648,13 @@ public final class Rfc5424Layout extends AbstractStringLayout {
 
     public static class Rfc5424LayoutBuilder {
         private Configuration config;
-        private Facility facility;
+        private Facility facility = Facility.LOCAL0;
         private String id;
-        private String ein;
-        private boolean includeMDC;
+        private String ein = String.valueOf(DEFAULT_ENTERPRISE_NUMBER);
+        private boolean includeMDC = true;
         private boolean includeNL;
         private String escapeNL;
-        private String mdcId;
+        private String mdcId = DEFAULT_MDCID;
         private String mdcPrefix;
         private String eventPrefix;
         private String appName;
@@ -844,4 +844,21 @@ public final class Rfc5424Layout extends AbstractStringLayout {
     public Facility getFacility() {
         return facility;
     }
+
+    public String getDefaultId() {
+        return defaultId;
+    }
+
+    public String getEnterpriseNumber() {
+        return enterpriseNumber;
+    }
+
+    public boolean isIncludeMdc() {
+        return includeMdc;
+    }
+
+    public String getMdcId() {
+        return mdcId;
+    }
+
 }
diff --git a/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAppender.java b/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAppender.java
index 6b24870dec..e441801f83 100644
--- a/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAppender.java
+++ b/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAppender.java
@@ -253,10 +253,10 @@ public final class FlumeAppender extends AbstractAppender implements FlumeEventF
         final int delayMillis = Integers.parseInt(maxDelayMillis, DEFAULT_MAX_DELAY);
 
         if (layout == null) {
-            final String enterpriseNumber = Rfc5424Layout.DEFAULT_ENTERPRISE_NUMBER;
+            final int enterpriseNumber = Rfc5424Layout.DEFAULT_ENTERPRISE_NUMBER;
             layout = new Rfc5424Layout.Rfc5424LayoutBuilder()
                     .setFacility(Facility.LOCAL0)
-                    .setEin(enterpriseNumber)
+                    .setEin(String.valueOf(enterpriseNumber))
                     .setIncludeMDC(true)
                     .setMdcId(Rfc5424Layout.DEFAULT_MDCID)
                     .setMdcPrefix(mdcPrefix)