You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by mi...@apache.org on 2015/11/09 11:08:31 UTC
[07/13] logging-log4j2 git commit: [LOG4J2-1193] Prefix all thread
names Log4j creates with "Log4j2-".
[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 <gg...@apache.org>
Authored: Wed Nov 4 12:43:46 2015 -0800
Committer: ggregory <gg...@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>