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)