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>