[LOG4J2-1558] SocketAppender should support IO buffering. Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/0c4f48a5 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/0c4f48a5 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/0c4f48a5
Branch: refs/heads/LOG4J2-1349-gcfree-threadcontext Commit: 0c4f48a5f95417785eaafad9df814863b7c2c639 Parents: 3c2148e Author: ggregory <ggreg...@apache.org> Authored: Sat Sep 3 17:42:27 2016 -0400 Committer: ggregory <ggreg...@apache.org> Committed: Sat Sep 3 17:42:27 2016 -0400 ---------------------------------------------------------------------- .../logging/log4j/core/appender/SocketAppender.java | 5 +++-- src/site/xdoc/manual/appenders.xml | 11 +++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/0c4f48a5/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java index de1663b..c156ecf 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java @@ -93,6 +93,7 @@ public class SocketAppender extends AbstractOutputStreamAppender<AbstractSocketM @Override public SocketAppender build() { boolean immediateFlush = isImmediateFlush(); + boolean bufferedIo = isBufferedIo(); Layout<? extends Serializable> layout = getLayout(); if (layout == null) { layout = SerializedLayout.createLayout(); @@ -112,8 +113,8 @@ public class SocketAppender extends AbstractOutputStreamAppender<AbstractSocketM final AbstractSocketManager manager = SocketAppender.createSocketManager(name, actualProtocol, host, port, connectTimeoutMillis, sslConfiguration, reconnectDelayMillis, immediateFail, layout, getBufferSize()); - return new SocketAppender(name, layout, getFilter(), manager, isIgnoreExceptions(), immediateFlush, - advertise ? configuration.getAdvertiser() : null); + return new SocketAppender(name, layout, getFilter(), manager, isIgnoreExceptions(), + !bufferedIo || immediateFlush, advertise ? configuration.getAdvertiser() : null); } public boolean getAdvertise() { http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/0c4f48a5/src/site/xdoc/manual/appenders.xml ---------------------------------------------------------------------- diff --git a/src/site/xdoc/manual/appenders.xml b/src/site/xdoc/manual/appenders.xml index 0a38f0b..3518dbe 100644 --- a/src/site/xdoc/manual/appenders.xml +++ b/src/site/xdoc/manual/appenders.xml @@ -3491,6 +3491,17 @@ public class JpaLogEntity extends AbstractLogEventWrapperEntity { to disk but could impact performance.</td> </tr> <tr> + <td>bufferedIO</td> + <td>boolean</td> + <td>When true - the default, events are written to a buffer and the data will be written to + the socket when the buffer is full or, if immediateFlush is set, when the record is written.</td> + </tr> + <tr> + <td>bufferSize</td> + <td>int</td> + <td>When bufferedIO is true, this is the buffer size, the default is 8192 bytes.</td> + </tr> + <tr> <td>layout</td> <td>Layout</td> <td>The Layout to use to format the LogEvent. The default is SerializedLayout.</td>