[LOG4J2-1193] Prefix all thread names Log4j creates with "Log4j2-".

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

Branch: refs/heads/LOG4J-1181
Commit: 80a0d0181323f07959fc144bf3eabc70befb38cd
Parents: 47e899d
Author: ggregory <ggreg...@apache.org>
Authored: Wed Nov 4 12:43:46 2015 -0800
Committer: ggregory <ggreg...@apache.org>
Committed: Wed Nov 4 12:43:46 2015 -0800

----------------------------------------------------------------------
 .../appender/mom/jeromq/JeroMqAppender.java     |  3 +-
 .../core/appender/mom/kafka/KafkaManager.java   |  3 +-
 .../appender/rolling/RollingFileManager.java    |  3 +-
 .../log4j/core/async/DaemonThreadFactory.java   |  4 +-
 .../core/config/FileConfigurationMonitor.java   |  4 +-
 .../core/net/server/AbstractSocketServer.java   |  3 +-
 .../log4j/core/net/server/TcpSocketServer.java  |  3 +-
 .../log4j/core/net/server/UdpSocketServer.java  |  3 +-
 .../logging/log4j/core/util/CachedClock.java    |  2 +-
 .../log4j/core/util/CoarseCachedClock.java      |  2 +-
 .../logging/log4j/core/util/Log4jThread.java    | 69 ++++++++++++++++++++
 .../flume/appender/FlumePersistentManager.java  |  3 +-
 src/changes/changes.xml                         |  3 +
 13 files changed, 94 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/80a0d018/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppender.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppender.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppender.java
index 948f466..c6805f5 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppender.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppender.java
@@ -34,6 +34,7 @@ import 
org.apache.logging.log4j.core.config.plugins.PluginElement;
 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
 import 
org.apache.logging.log4j.core.config.plugins.validation.constraints.Required;
 import org.apache.logging.log4j.core.layout.PatternLayout;
+import org.apache.logging.log4j.core.util.Log4jThread;
 import org.apache.logging.log4j.status.StatusLogger;
 import org.apache.logging.log4j.util.PropertiesUtil;
 import org.apache.logging.log4j.util.Strings;
@@ -94,7 +95,7 @@ public final class JeroMqAppender extends AbstractAppender {
         context = ZMQ.context(ioThreads);
         logger.trace("{} created ZMQ context {}", simpleName, context);
         if (enableShutdownHook) {
-            final Thread hook = new Thread(simpleName + "-shutdown") {
+            final Thread hook = new Log4jThread(simpleName + "-shutdown") {
                 @Override
                 public void run() {
                     shutdown();

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/80a0d018/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaManager.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaManager.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaManager.java
index 64797c8..ca141b0 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaManager.java
@@ -26,6 +26,7 @@ import org.apache.kafka.clients.producer.Producer;
 import org.apache.kafka.clients.producer.ProducerRecord;
 import org.apache.logging.log4j.core.appender.AbstractManager;
 import org.apache.logging.log4j.core.config.Property;
+import org.apache.logging.log4j.core.util.Log4jThread;
 
 public class KafkaManager extends AbstractManager {
 
@@ -58,7 +59,7 @@ public class KafkaManager extends AbstractManager {
     public void releaseSub() {
         if (producer != null) {
             // This thread is a workaround for this Kafka issue: 
https://issues.apache.org/jira/browse/KAFKA-1660
-            final Thread closeThread = new Thread(new Runnable() {
+            final Thread closeThread = new Log4jThread(new Runnable() {
                 @Override
                 public void run() {
                     producer.close();

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/80a0d018/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
index 97bc193..703e2d0 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
@@ -31,6 +31,7 @@ import org.apache.logging.log4j.core.appender.FileManager;
 import org.apache.logging.log4j.core.appender.ManagerFactory;
 import org.apache.logging.log4j.core.appender.rolling.action.AbstractAction;
 import org.apache.logging.log4j.core.appender.rolling.action.Action;
+import org.apache.logging.log4j.core.util.Log4jThread;
 
 /**
  * The Rolling File Manager.
@@ -182,7 +183,7 @@ public class RollingFileManager extends FileManager {
 
                 if (success && descriptor.getAsynchronous() != null) {
                     LOGGER.debug("RollingFileManager executing async {}", 
descriptor.getAsynchronous());
-                    thread = new Thread(new 
AsyncAction(descriptor.getAsynchronous(), this));
+                    thread = new Log4jThread(new 
AsyncAction(descriptor.getAsynchronous(), this));
                     thread.start();
                 }
                 return true;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/80a0d018/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DaemonThreadFactory.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DaemonThreadFactory.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DaemonThreadFactory.java
index 127ec75..1345d97 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DaemonThreadFactory.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DaemonThreadFactory.java
@@ -19,6 +19,8 @@ package org.apache.logging.log4j.core.async;
 import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import org.apache.logging.log4j.core.util.Log4jThread;
+
 /**
  * ThreadFactory that creates daemon threads for the async loggers.
  */
@@ -37,7 +39,7 @@ public class DaemonThreadFactory implements ThreadFactory {
 
     @Override
     public Thread newThread(final Runnable runnable) {
-        final Thread thread = new Thread(group, runnable, threadNamePrefix
+        final Thread thread = new Log4jThread(group, runnable, threadNamePrefix
                 + threadNumber.getAndIncrement(), 0);
         if (!thread.isDaemon()) {
             thread.setDaemon(true);

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/80a0d018/log4j-core/src/main/java/org/apache/logging/log4j/core/config/FileConfigurationMonitor.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/FileConfigurationMonitor.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/FileConfigurationMonitor.java
index 937501a..b8fcaa7 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/FileConfigurationMonitor.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/FileConfigurationMonitor.java
@@ -23,6 +23,8 @@ import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 
+import org.apache.logging.log4j.core.util.Log4jThread;
+
 /**
  * Configuration monitor that periodically checks the timestamp of the 
configuration file and calls the
  * ConfigurationListeners when an update occurs.
@@ -81,7 +83,7 @@ public class FileConfigurationMonitor implements 
ConfigurationMonitor {
                 if (currentLastModified > lastModified) {
                     lastModified = currentLastModified;
                     for (final ConfigurationListener listener : listeners) {
-                        final Thread thread = new Thread(new 
ReconfigurationWorker(listener, reconfigurable));
+                        final Thread thread = new Log4jThread(new 
ReconfigurationWorker(listener, reconfigurable));
                         thread.setDaemon(true);
                         thread.start();
                     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/80a0d018/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/AbstractSocketServer.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/AbstractSocketServer.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/AbstractSocketServer.java
index dbbf53f..af2ca0f 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/AbstractSocketServer.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/AbstractSocketServer.java
@@ -33,6 +33,7 @@ import org.apache.logging.log4j.core.config.Configuration;
 import org.apache.logging.log4j.core.config.ConfigurationSource;
 import org.apache.logging.log4j.core.config.xml.XmlConfiguration;
 import org.apache.logging.log4j.core.config.xml.XmlConfigurationFactory;
+import org.apache.logging.log4j.core.util.Log4jThread;
 import org.apache.logging.log4j.util.Strings;
 
 /**
@@ -124,7 +125,7 @@ public abstract class AbstractSocketServer<T extends 
InputStream> extends LogEve
      * @return the new thread that running this server.
      */
     public Thread startNewThread() {
-        final Thread thread = new Thread(this);
+        final Thread thread = new Log4jThread(this);
         thread.start();
         return thread;
     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/80a0d018/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/TcpSocketServer.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/TcpSocketServer.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/TcpSocketServer.java
index 72e2e4e..db5917c 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/TcpSocketServer.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/TcpSocketServer.java
@@ -31,6 +31,7 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 
 import org.apache.logging.log4j.core.config.ConfigurationFactory;
+import org.apache.logging.log4j.core.util.Log4jThread;
 
 /**
  * Listens for events over a socket connection.
@@ -193,7 +194,7 @@ public class TcpSocketServer<T extends InputStream> extends 
AbstractSocketServer
             ConfigurationFactory.setConfigurationFactory(new 
ServerConfigurationFactory(args[1]));
         }
         final TcpSocketServer<ObjectInputStream> socketServer = 
TcpSocketServer.createSerializedSocketServer(port);
-        final Thread serverThread = new Thread(socketServer);
+        final Thread serverThread = new Log4jThread(socketServer);
         serverThread.start();
         final Charset enc = Charset.defaultCharset();
         final BufferedReader reader = new BufferedReader(new 
InputStreamReader(System.in, enc));

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/80a0d018/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/UdpSocketServer.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/UdpSocketServer.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/UdpSocketServer.java
index 40e052c..7cf386c 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/UdpSocketServer.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/UdpSocketServer.java
@@ -28,6 +28,7 @@ import java.net.DatagramPacket;
 import java.net.DatagramSocket;
 
 import org.apache.logging.log4j.core.config.ConfigurationFactory;
+import org.apache.logging.log4j.core.util.Log4jThread;
 
 /**
  * Listens for events over a socket connection.
@@ -119,7 +120,7 @@ public class UdpSocketServer<T extends InputStream> extends 
AbstractSocketServer
             ConfigurationFactory.setConfigurationFactory(new 
ServerConfigurationFactory(args[1]));
         }
         final UdpSocketServer<ObjectInputStream> socketServer = 
UdpSocketServer.createSerializedSocketServer(port);
-        final Thread server = new Thread(socketServer);
+        final Thread server = new Log4jThread(socketServer);
         server.start();
         final BufferedReader reader = new BufferedReader(new 
InputStreamReader(System.in));
         while (true) {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/80a0d018/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CachedClock.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CachedClock.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CachedClock.java
index cdc109e..d53b2c0 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CachedClock.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CachedClock.java
@@ -34,7 +34,7 @@ public final class CachedClock implements Clock {
     private short count = 0;
 
     private CachedClock() {
-        final Thread updater = new Thread(new Runnable() {
+        final Thread updater = new Log4jThread(new Runnable() {
             @Override
             public void run() {
                 while (true) {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/80a0d018/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CoarseCachedClock.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CoarseCachedClock.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CoarseCachedClock.java
index 5f6b3e1..769db08 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CoarseCachedClock.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CoarseCachedClock.java
@@ -28,7 +28,7 @@ public final class CoarseCachedClock implements Clock {
     // ignore IDE complaints; volatile long is fine
     private volatile long millis = System.currentTimeMillis();
 
-    private final Thread updater = new Thread("Clock Updater Thread") {
+    private final Thread updater = new Log4jThread("Clock Updater Thread") {
         @Override
         public void run() {
             while (true) {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/80a0d018/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Log4jThread.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Log4jThread.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Log4jThread.java
new file mode 100644
index 0000000..1467a54
--- /dev/null
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Log4jThread.java
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+
+package org.apache.logging.log4j.core.util;
+
+/**
+ * Prefixes thread names with {@code "Log4j2-"}.
+ */
+public class Log4jThread extends Thread {
+
+    private static final String PREFIX = "Log4j2-";
+
+    private static int threadInitNumber;
+
+    private static synchronized int nextThreadNum() {
+        return threadInitNumber++;
+    }
+
+    private static String toThreadName(final Object name) {
+        return PREFIX + name;
+    }
+
+    public Log4jThread() {
+        super(toThreadName(nextThreadNum()));
+    }
+
+    public Log4jThread(final Runnable target) {
+        super(target, toThreadName(nextThreadNum()));
+    }
+
+    public Log4jThread(final Runnable target, final String name) {
+        super(target, toThreadName(name));
+    }
+
+    public Log4jThread(final String name) {
+        super(toThreadName(name));
+    }
+
+    public Log4jThread(final ThreadGroup group, final Runnable target) {
+        super(group, target, toThreadName(nextThreadNum()));
+    }
+
+    public Log4jThread(final ThreadGroup group, final Runnable target, final 
String name) {
+        super(group, target, toThreadName(name));
+    }
+
+    public Log4jThread(final ThreadGroup group, final Runnable target, final 
String name, final long stackSize) {
+        super(group, target, toThreadName(name), stackSize);
+    }
+
+    public Log4jThread(final ThreadGroup group, final String name) {
+        super(group, toThreadName(name));
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/80a0d018/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumePersistentManager.java
----------------------------------------------------------------------
diff --git 
a/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumePersistentManager.java
 
b/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumePersistentManager.java
index 9fa7a4e..4134671 100644
--- 
a/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumePersistentManager.java
+++ 
b/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumePersistentManager.java
@@ -45,6 +45,7 @@ import org.apache.logging.log4j.core.config.Property;
 import org.apache.logging.log4j.core.config.plugins.util.PluginManager;
 import org.apache.logging.log4j.core.config.plugins.util.PluginType;
 import org.apache.logging.log4j.core.util.FileUtils;
+import org.apache.logging.log4j.core.util.Log4jThread;
 import org.apache.logging.log4j.core.util.SecretKeyProvider;
 import org.apache.logging.log4j.util.Strings;
 
@@ -842,7 +843,7 @@ public class FlumePersistentManager extends 
FlumeAvroManager {
 
         @Override
         public Thread newThread(final Runnable r) {
-            final Thread thread = new Thread(group, r, namePrefix + 
threadNumber.getAndIncrement(), 0);
+            final Thread thread = new Log4jThread(group, r, namePrefix + 
threadNumber.getAndIncrement(), 0);
             thread.setDaemon(true);
             if (thread.getPriority() != Thread.NORM_PRIORITY) {
                 thread.setPriority(Thread.NORM_PRIORITY);

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/80a0d018/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 50f0673..1ae3f64 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -93,6 +93,9 @@
       <action issue="LOG4J2-948" dev="mattsicker" type="fix" due-to="Andrew 
Flower">
         Fix plugin documentation error about Converters.
       </action>
+      <action issue="LOG4J2-1193" dev="ggregory" type="fix">
+        Prefix all thread names Log4j creates with "Log4j2-".
+      </action>
       <action issue="LOG4J2-1174" dev="ggregory" type="update">
         Update Jackson from 2.6.2 to 2.6.3.
       </action>

Reply via email to