You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rp...@apache.org on 2017/11/24 15:49:38 UTC

logging-log4j2 git commit: LOG4J2-2126 Removed compile-time dependency on Java Management APIs from Log4J API module to improve compatibility with Android Platform which does not support JMX extensions.

Repository: logging-log4j2
Updated Branches:
  refs/heads/master 211326b32 -> db6ef306c


LOG4J2-2126 Removed compile-time dependency on Java Management APIs from Log4J API module to improve compatibility with Android Platform which does not support JMX extensions.


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

Branch: refs/heads/master
Commit: db6ef306c50fb2f1695d6d20f3dd180fbedb1a76
Parents: 211326b
Author: rpopma <rp...@apache.org>
Authored: Sat Nov 25 00:49:27 2017 +0900
Committer: rpopma <rp...@apache.org>
Committed: Sat Nov 25 00:49:27 2017 +0900

----------------------------------------------------------------------
 .../org/apache/logging/log4j/util/ProcessIdUtil.java   | 13 +++++++++++--
 src/changes/changes.xml                                |  5 +++++
 2 files changed, 16 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/db6ef306/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 bce9415..685aabe 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
@@ -18,7 +18,7 @@ package org.apache.logging.log4j.util;
 
 import java.io.File;
 import java.io.IOException;
-import java.lang.management.ManagementFactory;
+import java.lang.reflect.Method;
 
 /**
  * @Since 2.9
@@ -29,7 +29,16 @@ public class ProcessIdUtil {
 
     public static String getProcessId() {
         try {
-            return ManagementFactory.getRuntimeMXBean().getName().split("@")[0]; // likely works on most platforms
+            // LOG4J2-2126 use reflection to improve compatibility with Android Platform which does not support JMX extensions
+            Class<?> managementFactoryClass = Class.forName("java.lang.management.ManagementFactory");
+            Method getRuntimeMXBean = managementFactoryClass.getDeclaredMethod("getRuntimeMXBean");
+            Class<?> runtimeMXBeanClass = Class.forName("java.lang.management.RuntimeMXBean");
+            Method getName = runtimeMXBeanClass.getDeclaredMethod("getName");
+
+            Object runtimeMXBean = getRuntimeMXBean.invoke(null);
+            String name = (String) getName.invoke(runtimeMXBean);
+            //String name = ManagementFactory.getRuntimeMXBean().getName(); //JMX not allowed on Android
+            return name.split("@")[0]; // likely works on most platforms
         } catch (final Exception ex) {
             try {
                 return new File("/proc/self").getCanonicalFile().getName(); // try a Linux-specific way

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/db6ef306/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 6328706..a75f52b 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -30,6 +30,11 @@
          - "update" - Change
          - "remove" - Removed
     -->
+    <release version="2.10.1" date="2017-xx-xx" description="GA Release 2.10.1">
+      <action issue="LOG4J2-2126" dev="rpopma" type="fix" due-to="Oleg Kalnichevski">
+        Removed compile-time dependency on Java Management APIs from Log4J API module to improve compatibility with Android Platform which does not support JMX extensions.
+      </action>
+    </release>
     <release version="2.10.0" date="2017-11-18" description="GA Release 2.10.0">
       <action issue="LOG4J2-2120" dev="mikes" type="add" due-to="Carter Douglas Kozak ">
         Properly escape newlines and other control characters in JSON.