Repository: logging-log4j2 Updated Branches: refs/heads/master 7a9d18c3e -> 554086869
LOG4J2-1274 moved ByteBuffer size from OutputStreamManager to Constants, improved Constants docs Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/55408686 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/55408686 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/55408686 Branch: refs/heads/master Commit: 554086869fe0a49fb1edd9dae4f257c393baab9a Parents: 7a9d18c Author: rpopma <rpo...@apache.org> Authored: Sun Apr 17 15:27:10 2016 +0900 Committer: rpopma <rpo...@apache.org> Committed: Sun Apr 17 15:27:10 2016 +0900 ---------------------------------------------------------------------- .../apache/logging/log4j/core/appender/FileManager.java | 3 ++- .../logging/log4j/core/appender/OutputStreamManager.java | 7 +++---- .../log4j/core/appender/rolling/RollingFileManager.java | 4 ++-- .../logging/log4j/core/layout/ByteBufferDestination.java | 8 +++++--- .../org/apache/logging/log4j/core/util/Constants.java | 11 +++++++++++ 5 files changed, 23 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/55408686/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java index 43372b6..060f2db 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java @@ -29,6 +29,7 @@ import java.util.HashMap; import java.util.Map; import org.apache.logging.log4j.core.Layout; +import org.apache.logging.log4j.core.util.Constants; /** @@ -213,7 +214,7 @@ public class FileManager extends OutputStreamManager { OutputStream os; try { os = new FileOutputStream(name, data.append); - final int actualSize = data.bufferedIO ? data.bufferSize : DEFAULT_BUFFER_SIZE; + final int actualSize = data.bufferedIO ? data.bufferSize : Constants.ENCODER_BYTE_BUFFER_SIZE; final ByteBuffer buffer = ByteBuffer.wrap(new byte[actualSize]); return new FileManager(name, os, data.append, data.locking, data.advertiseURI, data.layout, writeHeader, buffer); http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/55408686/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java index b22f083..20ef401 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java @@ -23,21 +23,20 @@ import java.util.Objects; import org.apache.logging.log4j.core.Layout; import org.apache.logging.log4j.core.layout.ByteBufferDestination; +import org.apache.logging.log4j.core.util.Constants; /** * Manages an OutputStream so that it can be shared by multiple Appenders and will * allow appenders to reconfigure without requiring a new stream. */ public class OutputStreamManager extends AbstractManager implements ByteBufferDestination { - protected static final int DEFAULT_BUFFER_SIZE = 8 * 1024; - - private volatile OutputStream os; protected final Layout<?> layout; protected ByteBuffer byteBuffer; + private volatile OutputStream os; protected OutputStreamManager(final OutputStream os, final String streamName, final Layout<?> layout, final boolean writeHeader) { - this(os, streamName, layout, writeHeader, ByteBuffer.wrap(new byte[DEFAULT_BUFFER_SIZE])); + this(os, streamName, layout, writeHeader, ByteBuffer.wrap(new byte[Constants.ENCODER_BYTE_BUFFER_SIZE])); } /** http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/55408686/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 d0b0735..9c573eb 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 @@ -61,7 +61,7 @@ public class RollingFileManager extends FileManager { final RolloverStrategy rolloverStrategy, final String advertiseURI, final Layout<? extends Serializable> layout, final int bufferSize, final boolean writeHeader) { this(fileName, pattern, os, append, size, time, triggeringPolicy, rolloverStrategy, advertiseURI, layout, - writeHeader, ByteBuffer.wrap(new byte[DEFAULT_BUFFER_SIZE])); + writeHeader, ByteBuffer.wrap(new byte[Constants.ENCODER_BYTE_BUFFER_SIZE])); } protected RollingFileManager(final String fileName, final String pattern, final OutputStream os, @@ -416,7 +416,7 @@ public class RollingFileManager extends FileManager { OutputStream os; try { os = new FileOutputStream(name, data.append); - final int actualSize = data.bufferedIO ? data.bufferSize : DEFAULT_BUFFER_SIZE; + final int actualSize = data.bufferedIO ? data.bufferSize : Constants.ENCODER_BYTE_BUFFER_SIZE; final ByteBuffer buffer = ByteBuffer.wrap(new byte[actualSize]); final long time = file.lastModified(); // LOG4J2-531 create file first so time has valid value http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/55408686/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/ByteBufferDestination.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/ByteBufferDestination.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/ByteBufferDestination.java index 61ce3ba..88b8464 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/ByteBufferDestination.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/ByteBufferDestination.java @@ -19,9 +19,11 @@ package org.apache.logging.log4j.core.layout; import java.nio.ByteBuffer; /** - * ByteBufferDestination addresses the problem a producer has when the destination ByteBuffer is not large enough to - * fit all the data. This interface allows a producer to write arbitrary amounts of data to a destination. - * + * ByteBufferDestination is the destination that {@link Encoder}s write binary data to. It encapsulates a + * {@code ByteBuffer} and a {@code drain()} method the producer can call when the {@code ByteBuffer} is full. + * <p> + * This interface allows a producer to write arbitrary amounts of data to a destination. + * </p> * @since 2.6 */ public interface ByteBufferDestination { http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/55408686/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Constants.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Constants.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Constants.java index e1f175b..ef9764a 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Constants.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Constants.java @@ -135,6 +135,17 @@ public final class Constants { */ public static final int ENCODER_CHAR_BUFFER_SIZE = size("log4j.encoder.charBufferSize", 2048); + /** + * Default size of ByteBuffers used to encode LogEvents without allocating temporary objects. + * <p> + * The default value is {@value}, users can override with system property "log4j.encoder.byteBufferSize". + * </p> + * @see org.apache.logging.log4j.core.layout.ByteBufferDestination + * @since 2.6 + */ + public static final int ENCODER_BYTE_BUFFER_SIZE = size("log4j.encoder.byteBufferSize", 8 * 1024); + + private static int size(final String property, final int defaultValue) { return PropertiesUtil.getProperties().getIntegerProperty(property, defaultValue); }