LOG4J2-1080 RingBufferLogEventTranslator optimization - increased visibility of some fields to protected to facilitate falling back to AsyncEventRouter when the queue is full - RingBufferLogEventTranslator now initializes thread-related fields when the thread-local instance is constructed - thread-related fields are not modified by default - a separate method is available for modifying thread-related fields
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/43cefdd8 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/43cefdd8 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/43cefdd8 Branch: refs/heads/gelf-layout-gc-free Commit: 43cefdd8677052230d7ccdfb762526f507225afc Parents: 32e3069 Author: rpopma <rpo...@apache.org> Authored: Tue Mar 15 02:08:43 2016 +1100 Committer: rpopma <rpo...@apache.org> Committed: Tue Mar 15 02:08:43 2016 +1100 ---------------------------------------------------------------------- .../async/RingBufferLogEventTranslator.java | 53 ++++++-------------- 1 file changed, 15 insertions(+), 38 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/43cefdd8/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEventTranslator.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEventTranslator.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEventTranslator.java index 37a4825..da15ed6 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEventTranslator.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEventTranslator.java @@ -36,16 +36,16 @@ public class RingBufferLogEventTranslator implements private AsyncLogger asyncLogger; private String loggerName; - private Marker marker; - private String fqcn; - private Level level; - private Message message; - private Throwable thrown; + protected Marker marker; + protected String fqcn; + protected Level level; + protected Message message; + protected Throwable thrown; private Map<String, String> contextMap; private ContextStack contextStack; - private long threadId; - private String threadName; - private int threadPriority; + private long threadId = Thread.currentThread().getId(); + private String threadName = Thread.currentThread().getName(); + private int threadPriority = Thread.currentThread().getPriority(); private StackTraceElement location; private long currentTimeMillis; private long nanoTime; @@ -59,11 +59,10 @@ public class RingBufferLogEventTranslator implements } /** - * Release references held by this object to allow objects to be - * garbage-collected. + * Release references held by this object to allow objects to be garbage-collected. */ private void clear() { - setValues(null, // asyncLogger + setBasicValues(null, // asyncLogger null, // loggerName null, // marker null, // fqcn @@ -72,18 +71,16 @@ public class RingBufferLogEventTranslator implements null, // t null, // map null, // contextStack - 0, // threadName null, // location 0, // currentTimeMillis - null, - 0, 0 // nanoTime + 0 // nanoTime ); } - public void setValues(final AsyncLogger anAsyncLogger, final String aLoggerName, final Marker aMarker, + public void setBasicValues(final AsyncLogger anAsyncLogger, final String aLoggerName, final Marker aMarker, final String theFqcn, final Level aLevel, final Message msg, final Throwable aThrowable, - final Map<String, String> aMap, final ContextStack aContextStack, long threadId, - final String threadName, int threadPriority, final StackTraceElement aLocation, final long aCurrentTimeMillis, final long aNanoTime) { + final Map<String, String> aMap, final ContextStack aContextStack, final StackTraceElement aLocation, + final long aCurrentTimeMillis, final long aNanoTime) { this.asyncLogger = anAsyncLogger; this.loggerName = aLoggerName; this.marker = aMarker; @@ -93,34 +90,14 @@ public class RingBufferLogEventTranslator implements this.thrown = aThrowable; this.contextMap = aMap; this.contextStack = aContextStack; - this.threadId = threadId; - this.threadName = threadName; - this.threadPriority = threadPriority; this.location = aLocation; this.currentTimeMillis = aCurrentTimeMillis; this.nanoTime = aNanoTime; } - public void setValuesPart1(final AsyncLogger anAsyncLogger, final String aLoggerName, final Marker aMarker, - final String theFqcn, final Level aLevel, final Message msg, final Throwable aThrowable) { - this.asyncLogger = anAsyncLogger; - this.loggerName = aLoggerName; - this.marker = aMarker; - this.fqcn = theFqcn; - this.level = aLevel; - this.message = msg; - this.thrown = aThrowable; - } - - public void setValuesPart2(final Map<String, String> aMap, final ContextStack aContextStack, long threadId, - final String threadName, int threadPriority, final StackTraceElement aLocation, final long aCurrentTimeMillis, final long aNanoTime) { - this.contextMap = aMap; - this.contextStack = aContextStack; + public void setThreadValues(final long threadId, final String threadName, final int threadPriority) { this.threadId = threadId; this.threadName = threadName; this.threadPriority = threadPriority; - this.location = aLocation; - this.currentTimeMillis = aCurrentTimeMillis; - this.nanoTime = aNanoTime; } }