You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ma...@apache.org on 2017/08/26 20:53:25 UTC

[07/50] logging-log4j2 git commit: LOG4J2-2022 - RFC5424Layout now prints the process id

LOG4J2-2022 - RFC5424Layout now prints the process id


Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/39114a7a
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/39114a7a
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/39114a7a

Branch: refs/heads/LOG4J2-1431
Commit: 39114a7af34a01312bcbefadf3e905dcb6fde75b
Parents: e3a1298
Author: Ralph Goers <rg...@nextiva.com>
Authored: Sun Aug 20 16:08:43 2017 -0700
Committer: Ralph Goers <rg...@nextiva.com>
Committed: Sun Aug 20 16:08:55 2017 -0700

----------------------------------------------------------------------
 .../logging/log4j/util/ProcessIdUtil.java       | 14 ++++++++++++
 .../logging/log4j/util/ProcessIdUtilTest.java   | 13 +++++++++++
 .../logging/log4j/util/ProcessIdUtil.java       | 17 +++++++++++++-
 .../logging/log4j/util/ProcessIdUtilTest.java   | 14 ++++++++++++
 .../core/pattern/ProcessIdPatternConverter.java | 12 +++-------
 .../log4j/core/layout/Rfc5424LayoutTest.java    | 24 ++++++++++++--------
 src/changes/changes.xml                         |  3 +++
 7 files changed, 77 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/39114a7a/log4j-api-java9/src/main/java/org/apache/logging/log4j/util/ProcessIdUtil.java
----------------------------------------------------------------------
diff --git a/log4j-api-java9/src/main/java/org/apache/logging/log4j/util/ProcessIdUtil.java b/log4j-api-java9/src/main/java/org/apache/logging/log4j/util/ProcessIdUtil.java
new file mode 100644
index 0000000..31ed6cf
--- /dev/null
+++ b/log4j-api-java9/src/main/java/org/apache/logging/log4j/util/ProcessIdUtil.java
@@ -0,0 +1,14 @@
+package org.apache.logging.log4j.util;
+
+public class ProcessIdUtil {
+
+    public static final String DEFAULT_PROCESSID = "-";
+
+    public static String getProcessId() {
+        try {
+            return Long.toString(ProcessHandle.current().pid());
+        } catch(Exception ex) {
+            return DEFAULT_PROCESSID;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/39114a7a/log4j-api-java9/src/test/java/org/apache/logging/log4j/util/ProcessIdUtilTest.java
----------------------------------------------------------------------
diff --git a/log4j-api-java9/src/test/java/org/apache/logging/log4j/util/ProcessIdUtilTest.java b/log4j-api-java9/src/test/java/org/apache/logging/log4j/util/ProcessIdUtilTest.java
new file mode 100644
index 0000000..8a381d9
--- /dev/null
+++ b/log4j-api-java9/src/test/java/org/apache/logging/log4j/util/ProcessIdUtilTest.java
@@ -0,0 +1,13 @@
+package org.apache.logging.log4j.util;
+
+import org.junit.Test;
+import static org.junit.Assert.assertFalse;
+
+public class ProcessIdUtilTest {
+
+    @Test
+    public void processIdTest() throws Exception {
+        String processId = ProcessIdUtil.getProcessId();
+        assertFalse("ProcessId is default", processId.equals(ProcessIdUtil.DEFAULT_PROCESSID));
+    }
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/39114a7a/log4j-api/src/main/java/org/apache/logging/log4j/util/ProcessIdUtil.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util/ProcessIdUtil.java b/log4j-api/src/main/java/org/apache/logging/log4j/util/ProcessIdUtil.java
index 9852291..f9bf342 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/util/ProcessIdUtil.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/ProcessIdUtil.java
@@ -1,8 +1,23 @@
 package org.apache.logging.log4j.util;
 
+import java.io.File;
+import java.io.IOException;
+import java.lang.management.ManagementFactory;
+
 public class ProcessIdUtil {
 
+    public static final String DEFAULT_PROCESSID = "-";
+
     public static String getProcessId() {
-        return "-";
+        try {
+            return ManagementFactory.getRuntimeMXBean().getName().split("@")[0]; // likely works on most platforms
+        } catch (final Exception ex) {
+            try {
+                return new File("/proc/self").getCanonicalFile().getName(); // try a Linux-specific way
+            } catch (final IOException ignoredUseDefault) {
+                // Ignore exception.
+            }
+        }
+        return DEFAULT_PROCESSID;
     }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/39114a7a/log4j-api/src/test/java/org/apache/logging/log4j/util/ProcessIdUtilTest.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/util/ProcessIdUtilTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/util/ProcessIdUtilTest.java
new file mode 100644
index 0000000..5ce161d
--- /dev/null
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/util/ProcessIdUtilTest.java
@@ -0,0 +1,14 @@
+package org.apache.logging.log4j.util;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+public class ProcessIdUtilTest {
+
+    @Test
+    public void processIdTest() throws Exception {
+        String processId = ProcessIdUtil.getProcessId();
+        assertFalse("ProcessId is default", processId.equals(ProcessIdUtil.DEFAULT_PROCESSID));
+    }
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/39114a7a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ProcessIdPatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ProcessIdPatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ProcessIdPatternConverter.java
index dd9579b..7c37263 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ProcessIdPatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ProcessIdPatternConverter.java
@@ -22,6 +22,7 @@ import java.lang.management.ManagementFactory;
 
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.config.plugins.Plugin;
+import org.apache.logging.log4j.util.ProcessIdUtil;
 
 @Plugin(name = "ProcessIdPatternConverter", category = "Converter")
 @ConverterKeys({ "pid", "processId" })
@@ -35,15 +36,8 @@ public final class ProcessIdPatternConverter extends LogEventPatternConverter {
     private ProcessIdPatternConverter(final String... options) {
         super("Process ID", "pid");
         final String defaultValue = options.length > 0 ? options[0] : DEFAULT_DEFAULT_VALUE;
-        String discoveredPid = null;
-        try {
-            discoveredPid = ManagementFactory.getRuntimeMXBean().getName().split("@")[0]; // likely works on most platforms
-        } catch (final Exception ex) {
-            try {
-                discoveredPid = new File("/proc/self").getCanonicalFile().getName(); // try a Linux-specific way
-            } catch (final IOException ignoredUseDefault) {}
-        }
-        pid = discoveredPid == null ? defaultValue : discoveredPid;
+        String discoveredPid = ProcessIdUtil.getProcessId();
+        pid = discoveredPid.equals(ProcessIdUtil.DEFAULT_PROCESSID) ? defaultValue : discoveredPid;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/39114a7a/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/Rfc5424LayoutTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/Rfc5424LayoutTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/Rfc5424LayoutTest.java
index 5025ff3..db70075 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/Rfc5424LayoutTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/Rfc5424LayoutTest.java
@@ -36,6 +36,7 @@ import org.apache.logging.log4j.message.StructuredDataCollectionMessage;
 import org.apache.logging.log4j.message.StructuredDataMessage;
 import org.apache.logging.log4j.status.StatusLogger;
 import org.apache.logging.log4j.test.appender.ListAppender;
+import org.apache.logging.log4j.util.ProcessIdUtil;
 import org.apache.logging.log4j.util.Strings;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -49,23 +50,26 @@ public class Rfc5424LayoutTest {
     LoggerContext ctx = LoggerContext.getContext();
     Logger root = ctx.getRootLogger();
 
-
-    private static final String line1 = "ATM - - [RequestContext@3692 loginId=\"JohnDoe\"] starting mdc pattern test";
-    private static final String line2 = "ATM - - [RequestContext@3692 loginId=\"JohnDoe\"] empty mdc";
-    private static final String line3 = "ATM - - [RequestContext@3692 loginId=\"JohnDoe\"] filled mdc";
+    private static final String PROCESSID = ProcessIdUtil.getProcessId();
+    private static final String line1 = String.format("ATM %s - [RequestContext@3692 loginId=\"JohnDoe\"] starting mdc pattern test", PROCESSID);
+    private static final String line2 = String.format("ATM %s - [RequestContext@3692 loginId=\"JohnDoe\"] empty mdc", PROCESSID);
+    private static final String line3 = String.format("ATM %s - [RequestContext@3692 loginId=\"JohnDoe\"] filled mdc", PROCESSID);
     private static final String line4 =
-        "ATM - Audit [Transfer@18060 Amount=\"200.00\" FromAccount=\"123457\" ToAccount=\"123456\"]" +
-        "[RequestContext@3692 ipAddress=\"192.168.0.120\" loginId=\"JohnDoe\"] Transfer Complete";
-    private static final String lineEscaped3 = "ATM - - [RequestContext@3692 escaped=\"Testing escaping #012 \\\" \\] \\\"\" loginId=\"JohnDoe\"] filled mdc";
+        String.format("ATM %s Audit [Transfer@18060 Amount=\"200.00\" FromAccount=\"123457\" ToAccount=\"123456\"]" +
+        "[RequestContext@3692 ipAddress=\"192.168.0.120\" loginId=\"JohnDoe\"] Transfer Complete", PROCESSID);
+    private static final String lineEscaped3 =
+            String.format("ATM %s - [RequestContext@3692 escaped=\"Testing escaping #012 \\\" \\] \\\"\" loginId=\"JohnDoe\"] filled mdc", PROCESSID);
     private static final String lineEscaped4 =
-        "ATM - Audit [Transfer@18060 Amount=\"200.00\" FromAccount=\"123457\" ToAccount=\"123456\"]" +
-        "[RequestContext@3692 escaped=\"Testing escaping #012 \\\" \\] \\\"\" ipAddress=\"192.168.0.120\" loginId=\"JohnDoe\"] Transfer Complete";
+        String.format("ATM %s Audit [Transfer@18060 Amount=\"200.00\" FromAccount=\"123457\" ToAccount=\"123456\"]" +
+        "[RequestContext@3692 escaped=\"Testing escaping #012 \\\" \\] \\\"\" ipAddress=\"192.168.0.120\" loginId=\"JohnDoe\"] Transfer Complete",
+            PROCESSID);
     private static final String collectionLine1 = "[Transfer@18060 Amount=\"200.00\" FromAccount=\"123457\" " +
             "ToAccount=\"123456\"]";
     private static final String collectionLine2 = "[Extra@18060 Item1=\"Hello\" Item2=\"World\"]";
     private static final String collectionLine3 = "[RequestContext@3692 ipAddress=\"192.168.0.120\" loginId=\"JohnDoe\"]";
     private static final String collectionEndOfLine = "Transfer Complete";
 
+
     static ConfigurationFactory cf = new BasicConfigurationFactory();
 
     @Rule
@@ -467,7 +471,7 @@ public class Rfc5424LayoutTest {
     public void testSubstituteStructuredData() {
         final String mdcId = "RequestContext";
 
-        final String expectedToContain = "ATM - MSG-ID - Message";
+        final String expectedToContain = String.format("ATM %s MSG-ID - Message", PROCESSID);
 
         for (final Appender appender : root.getAppenders().values()) {
             root.removeAppender(appender);

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/39114a7a/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 70e88d1..12033e4 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -31,6 +31,9 @@
          - "remove" - Removed
     -->
     <release version="2.9.0" date="2017-MM-DD" description="GA Release 2.9.0">
+      <action issue="LOG4J2-2022" dev="rgoers" type="update">
+        RFC5424Layout now prints the process id.
+      </action>
       <action issue="LOG4J2-2020" dev="mikes" type="update">
         Remove default layout from KafkaAppender.
       </action>