Repository: logging-log4j2 Updated Branches: refs/heads/master 84e16b884 -> 79acbcb65
LOG4J2-1666 make RelativeTimePatternConverter garbage-free Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/79acbcb6 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/79acbcb6 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/79acbcb6 Branch: refs/heads/master Commit: 79acbcb658a8eb15e1e9c965d0432add39538e19 Parents: 84e16b8 Author: rpopma <[email protected]> Authored: Sun Nov 6 16:15:42 2016 +0900 Committer: rpopma <[email protected]> Committed: Sun Nov 6 16:15:42 2016 +0900 ---------------------------------------------------------------------- .../core/pattern/RelativeTimePatternConverter.java | 17 ++--------------- log4j-core/src/test/resources/gcFreeLogging.xml | 6 +++--- .../test/resources/gcFreeMixedSyncAsyncLogging.xml | 6 +++--- src/changes/changes.xml | 3 +++ 4 files changed, 11 insertions(+), 21 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/79acbcb6/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/RelativeTimePatternConverter.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/RelativeTimePatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/RelativeTimePatternConverter.java index 9767be1..98e3d5e 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/RelativeTimePatternConverter.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/RelativeTimePatternConverter.java @@ -27,12 +27,7 @@ import org.apache.logging.log4j.core.config.plugins.Plugin; @Plugin(name = "RelativeTimePatternConverter", category = PatternConverter.CATEGORY) @ConverterKeys({ "r", "relative" }) public class RelativeTimePatternConverter extends LogEventPatternConverter { - /** - * Cached formatted timestamp. - */ - private long lastTimestamp = Long.MIN_VALUE; private final long startTime = ManagementFactory.getRuntimeMXBean().getStartTime(); - private String relative; /** * Private constructor. @@ -47,8 +42,7 @@ public class RelativeTimePatternConverter extends LogEventPatternConverter { * @param options options, currently ignored, may be null. * @return instance of RelativeTimePatternConverter. */ - public static RelativeTimePatternConverter newInstance( - final String[] options) { + public static RelativeTimePatternConverter newInstance(final String[] options) { return new RelativeTimePatternConverter(); } @@ -58,13 +52,6 @@ public class RelativeTimePatternConverter extends LogEventPatternConverter { @Override public void format(final LogEvent event, final StringBuilder toAppendTo) { final long timestamp = event.getTimeMillis(); - - synchronized (this) { - if (timestamp != lastTimestamp) { - lastTimestamp = timestamp; - relative = Long.toString(timestamp - startTime); - } - } - toAppendTo.append(relative); + toAppendTo.append(timestamp - startTime); } } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/79acbcb6/log4j-core/src/test/resources/gcFreeLogging.xml ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/resources/gcFreeLogging.xml b/log4j-core/src/test/resources/gcFreeLogging.xml index fd3d1a2..f91eb11 100644 --- a/log4j-core/src/test/resources/gcFreeLogging.xml +++ b/log4j-core/src/test/resources/gcFreeLogging.xml @@ -6,13 +6,13 @@ </Console> <File name="File" fileName="target/gcfreefile.log" bufferedIO="false"> <PatternLayout> - <Pattern>%d{DEFAULT}{UTC} %p %c{1.} [%t] %m%n %highlight{%style{%d}{bright,cyan} %p %c{1.} [%t] %m%n}</Pattern> + <Pattern>%d{DEFAULT}{UTC} %r %p %c{1.} [%t] %m%n %highlight{%style{%d}{bright,cyan} %p %c{1.} [%t] %m%n}</Pattern> </PatternLayout> </File> <RollingFile name="RollingFile" fileName="target/gcfreeRollingFile.log" filePattern="target/gcfree-%d{MM-dd-yy-HH-mm-ss}.log.gz"> <PatternLayout> - <Pattern>%d{yyyy-MM-dd'T'HH:mm:ss,SSS}{UTC} %p %c{1.} [%t] %m%n %highlight{%style{%d}{bright,cyan} %p %c{1.} [%t] %m%n}</Pattern> + <Pattern>%d{yyyy-MM-dd'T'HH:mm:ss,SSS}{UTC} %r %p %c{1.} [%t] %m%n %highlight{%style{%d}{bright,cyan} %p %c{1.} [%t] %m%n}</Pattern> </PatternLayout> <Policies> <SizeBasedTriggeringPolicy size="50M" /> @@ -20,7 +20,7 @@ </RollingFile> <RandomAccessFile name="RandomAccessFile" fileName="target/gcfreeRAF.log" immediateFlush="false" append="false"> <PatternLayout> - <Pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSS}{UTC} %p %c{1.} [%t] %X{aKey} %m %ex%n %highlight{%style{%d}{bright,cyan} %p %c{1.} [%t] %X{aKey} %m %ex%n}</Pattern> + <Pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSS}{UTC} %r %p %c{1.} [%t] %X{aKey} %m %ex%n %highlight{%style{%d}{bright,cyan} %p %c{1.} [%t] %X{aKey} %m %ex%n}</Pattern> </PatternLayout> </RandomAccessFile> <RollingRandomAccessFile name="RollingRandomAccessFile" http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/79acbcb6/log4j-core/src/test/resources/gcFreeMixedSyncAsyncLogging.xml ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/resources/gcFreeMixedSyncAsyncLogging.xml b/log4j-core/src/test/resources/gcFreeMixedSyncAsyncLogging.xml index 7c29931..c5f77ec 100644 --- a/log4j-core/src/test/resources/gcFreeMixedSyncAsyncLogging.xml +++ b/log4j-core/src/test/resources/gcFreeMixedSyncAsyncLogging.xml @@ -6,13 +6,13 @@ </Console> <File name="File" fileName="target/gcfreefileMixed.log" bufferedIO="false"> <PatternLayout> - <Pattern>%d{yyyy-MM-dd'T'HH:mm:ss,SSS}{UTC} %p %c{1.} [%t] %m%n %highlight{%style{%d}{bright,cyan} %p %c{1.} [%t] %m%n}</Pattern> + <Pattern>%d{yyyy-MM-dd'T'HH:mm:ss,SSS}{UTC} %r %p %c{1.} [%t] %m%n %highlight{%style{%d}{bright,cyan} %p %c{1.} [%t] %m%n}</Pattern> </PatternLayout> </File> <RollingFile name="RollingFile" fileName="target/gcfreeRollingFileMixed.log" filePattern="target/gcfree-%d{MM-dd-yy-HH-mm-ss}.log.gz"> <PatternLayout> - <Pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSS}{UTC} %p %c{1.} [%t] %m%n %highlight{%style{%d}{bright,cyan} %p %c{1.} [%t] %m%n}</Pattern> + <Pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSS}{UTC} %r %p %c{1.} [%t] %m%n %highlight{%style{%d}{bright,cyan} %p %c{1.} [%t] %m%n}</Pattern> </PatternLayout> <Policies> <SizeBasedTriggeringPolicy size="50M" /> @@ -20,7 +20,7 @@ </RollingFile> <RandomAccessFile name="RandomAccessFile" fileName="target/gcfreeRAFMixed.log" immediateFlush="false" append="false"> <PatternLayout> - <Pattern>%d{DEFAULT}{UTC} %p %c{1.} [%t] %X{aKey} %m %ex%n %highlight{%style{%d}{bright,cyan} %p %c{1.} [%t] %X{aKey} %m %ex%n}</Pattern> + <Pattern>%d{DEFAULT}{UTC} %r %p %c{1.} [%t] %X{aKey} %m %ex%n %highlight{%style{%d}{bright,cyan} %p %c{1.} [%t] %X{aKey} %m %ex%n}</Pattern> </PatternLayout> </RandomAccessFile> <RollingRandomAccessFile name="RollingRandomAccessFile" http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/79acbcb6/src/changes/changes.xml ---------------------------------------------------------------------- diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 1925175..66c5c35 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -24,6 +24,9 @@ </properties> <body> <release version="2.8" date="2016-MM-DD" description="GA Release 2.8"> + <action issue="LOG4J2-1666" dev="rpopma" type="fix"> + (GC) Avoid allocating temporary objects in RelativeTimePatternConverter. + </action> <action issue="LOG4J2-1665" dev="rpopma" type="fix"> (GC) Avoid allocating temporary objects in IntegerPatternConverter. </action>
