Repository: logging-log4j2 Updated Branches: refs/heads/master 4cff6dd46 -> 8142c3e04
[LOG4J2-1299] Add pattern converter for thread id and priority in PatternLayout. Remove thread ID and thread priority caches, they are not needed since these items are accessed as plain ivars through getters. Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/8142c3e0 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/8142c3e0 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/8142c3e0 Branch: refs/heads/master Commit: 8142c3e04b82763a3ecb7915ca1bbf4d0a52c6c4 Parents: 4cff6dd Author: ggregory <[email protected]> Authored: Tue Mar 1 20:58:04 2016 -0800 Committer: ggregory <[email protected]> Committed: Tue Mar 1 20:58:04 2016 -0800 ---------------------------------------------------------------------- .../logging/log4j/core/async/AsyncLogger.java | 16 ++++----- .../core/async/ThreadNameCachingStrategy.java | 38 ++------------------ 2 files changed, 10 insertions(+), 44 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/8142c3e0/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java index d7ffb3c..1a060d2 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java @@ -235,6 +235,7 @@ public class AsyncLogger extends Logger implements EventTranslatorVararg<RingBuf // Implementation note: this method is tuned for performance. MODIFY WITH CARE! + final Thread currentThread = Thread.currentThread(); translator.setValuesPart2( // config properties are taken care of in the EventHandler thread // in the AsyncLogger#actualAsyncLog method @@ -245,15 +246,15 @@ public class AsyncLogger extends Logger implements EventTranslatorVararg<RingBuf // needs shallow copy to be fast (LOG4J2-154) ThreadContext.getImmutableStack(), // - THREAD_NAME_CACHING_STRATEGY.getThreadId(), // + currentThread.getId(), // // Thread.currentThread().getName(), // THREAD_NAME_CACHING_STRATEGY.getThreadName(), - THREAD_NAME_CACHING_STRATEGY.getThreadPriority(), // + currentThread.getPriority(), // // location (expensive to calculate) - calcLocationIfRequested(fqcn) -, eventTimeMillis(message), nanoClock.nanoTime() // + calcLocationIfRequested(fqcn), + eventTimeMillis(message), nanoClock.nanoTime() // ); } @@ -316,12 +317,11 @@ public class AsyncLogger extends Logger implements EventTranslatorVararg<RingBuf // needs shallow copy to be fast (LOG4J2-154) final ContextStack contextStack = ThreadContext.getImmutableStack(); - final Long threadId = THREAD_NAME_CACHING_STRATEGY.getThreadId(); + final Thread currentThread = Thread.currentThread(); final String threadName = THREAD_NAME_CACHING_STRATEGY.getThreadName(); - final Integer threadPriority = THREAD_NAME_CACHING_STRATEGY.getThreadPriority(); - event.setValues(asyncLogger, asyncLogger.getName(), marker, fqcn, level, message, thrown, contextMap, - contextStack, threadId, threadName, threadPriority, location, eventTimeMillis(message), nanoClock.nanoTime()); + contextStack, currentThread.getId(), threadName, currentThread.getPriority(), location, + eventTimeMillis(message), nanoClock.nanoTime()); } /** http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/8142c3e0/log4j-core/src/main/java/org/apache/logging/log4j/core/async/ThreadNameCachingStrategy.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/ThreadNameCachingStrategy.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/ThreadNameCachingStrategy.java index 0de95a8..f82f71c 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/ThreadNameCachingStrategy.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/ThreadNameCachingStrategy.java @@ -26,16 +26,6 @@ import org.apache.logging.log4j.util.PropertiesUtil; enum ThreadNameCachingStrategy { // LOG4J2-467 CACHED { @Override - public long getThreadId() { - Long result = THREADLOCAL_ID.get(); - if (result == null) { - result = Thread.currentThread().getId(); - THREADLOCAL_ID.set(result); - } - return result; - } - - @Override public String getThreadName() { String result = THREADLOCAL_NAME.get(); if (result == null) { @@ -44,42 +34,18 @@ enum ThreadNameCachingStrategy { // LOG4J2-467 } return result; } - - @Override - public int getThreadPriority() { - Integer result = THREADLOCAL_PRIORITY.get(); - if (result == null) { - result = Thread.currentThread().getPriority(); - THREADLOCAL_PRIORITY.set(result); - } - return result; - } }, UNCACHED { @Override - public long getThreadId() { - return Thread.currentThread().getId(); - } - - @Override public String getThreadName() { return Thread.currentThread().getName(); } - - @Override - public int getThreadPriority() { - return Thread.currentThread().getPriority(); - } }; - + private static final StatusLogger LOGGER = StatusLogger.getLogger(); - private static final ThreadLocal<Long> THREADLOCAL_ID = new ThreadLocal<>(); private static final ThreadLocal<String> THREADLOCAL_NAME = new ThreadLocal<>(); - private static final ThreadLocal<Integer> THREADLOCAL_PRIORITY = new ThreadLocal<>(); - - abstract long getThreadId(); + abstract String getThreadName(); - abstract int getThreadPriority(); static ThreadNameCachingStrategy create() { final String name = PropertiesUtil.getProperties().getStringProperty("AsyncLogger.ThreadNameStrategy",
