You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rp...@apache.org on 2016/04/04 18:41:30 UTC
[5/7] logging-log4j2 git commit: LOG4J2-1344 FileManager and
RollingFileManager manage their buffer size so cannot delegate creating a
ByteBufferDestinationOutputStream to the constructor of their
OutputStreamManager superclass
LOG4J2-1344 FileManager and RollingFileManager manage their buffer size so cannot delegate creating a ByteBufferDestinationOutputStream to the constructor of their OutputStreamManager superclass
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/ff21f256
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/ff21f256
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/ff21f256
Branch: refs/heads/LOG4J2-1343-no-gc-outputstreamappenders
Commit: ff21f2567f83a87f43d036cfc6f4a69f0748931b
Parents: 0f3d825
Author: rpopma <rp...@apache.org>
Authored: Tue Apr 5 01:38:53 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Tue Apr 5 01:38:53 2016 +0900
----------------------------------------------------------------------
.../logging/log4j/core/appender/FileManager.java | 11 +++++++++--
.../core/appender/rolling/RollingFileManager.java | 17 +++++++++++++++--
2 files changed, 24 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ff21f256/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 4de34ad..e45b28c 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,8 @@ import java.util.HashMap;
import java.util.Map;
import org.apache.logging.log4j.core.Layout;
+import org.apache.logging.log4j.core.util.ByteBufferDestinationOutputStream;
+import org.apache.logging.log4j.core.util.Constants;
/**
@@ -126,7 +128,7 @@ public class FileManager extends OutputStreamManager {
public boolean isLocking() {
return isLocking;
}
-
+
/**
* Returns the buffer size to use if the appender was configured with BufferedIO=true, otherwise returns a negative
* number.
@@ -203,7 +205,12 @@ public class FileManager extends OutputStreamManager {
os = new FileOutputStream(name, data.append);
int bufferSize = data.bufferSize;
if (data.bufferedIO) {
- os = new BufferedOutputStream(os, bufferSize);
+
+ // LOG4J2-1344 this Manager controls the buffer size so wrap the stream here
+ // (or OutputStreamManager constructor will wrap the stream with a default-size buffer).
+ os = Constants.ENABLE_DIRECT_ENCODERS
+ ? new ByteBufferDestinationOutputStream(os, bufferSize)
+ : new BufferedOutputStream(os, bufferSize);
} else {
bufferSize = -1; // signals to RollingFileManager not to use BufferedOutputStream
}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ff21f256/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 81104e8..2b824d7 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
@@ -32,6 +32,8 @@ import org.apache.logging.log4j.core.appender.FileManager;
import org.apache.logging.log4j.core.appender.ManagerFactory;
import org.apache.logging.log4j.core.appender.rolling.action.AbstractAction;
import org.apache.logging.log4j.core.appender.rolling.action.Action;
+import org.apache.logging.log4j.core.util.ByteBufferDestinationOutputStream;
+import org.apache.logging.log4j.core.util.Constants;
import org.apache.logging.log4j.core.util.Log4jThread;
/**
@@ -135,7 +137,13 @@ public class RollingFileManager extends FileManager {
protected void createFileAfterRollover() throws IOException {
final OutputStream os = new FileOutputStream(getFileName(), isAppend());
if (getBufferSize() > 0) { // negative buffer size means no buffering
- setOutputStream(new BufferedOutputStream(os, getBufferSize()));
+
+ // LOG4J2-1344 this Manager controls the buffer size so wrap the stream here
+ // (or OutputStreamManager constructor will wrap the stream with a default-size buffer).
+ final OutputStream actual = Constants.ENABLE_DIRECT_ENCODERS
+ ? new ByteBufferDestinationOutputStream(os, getBufferSize())
+ : new BufferedOutputStream(os, getBufferSize());
+ setOutputStream(actual);
} else {
setOutputStream(os);
}
@@ -403,7 +411,12 @@ public class RollingFileManager extends FileManager {
os = new FileOutputStream(name, data.append);
int bufferSize = data.bufferSize;
if (data.bufferedIO) {
- os = new BufferedOutputStream(os, bufferSize);
+
+ // LOG4J2-1344 this Manager controls the buffer size so wrap the stream here
+ // (or OutputStreamManager constructor will wrap the stream with a default-size buffer).
+ os = Constants.ENABLE_DIRECT_ENCODERS
+ ? new ByteBufferDestinationOutputStream(os, bufferSize)
+ : new BufferedOutputStream(os, bufferSize);
} else {
bufferSize = -1; // negative buffer size signals bufferedIO was configured false
}