You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by gg...@apache.org on 2014/09/02 16:11:45 UTC

[2/2] git commit: Sort methods in AB order.

Sort methods in AB order.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/30ef44b5
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/30ef44b5
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/30ef44b5

Branch: refs/heads/master
Commit: 30ef44b5ce4cc30f9c8361411616d2ed7738f2f3
Parents: 3faca25
Author: Gary Gregory <ga...@gmail.com>
Authored: Tue Sep 2 10:11:40 2014 -0400
Committer: Gary Gregory <ga...@gmail.com>
Committed: Tue Sep 2 10:11:40 2014 -0400

----------------------------------------------------------------------
 .../logging/log4j/streams/ByteStreamLogger.java | 110 +++++------
 .../logging/log4j/streams/CharStreamLogger.java |  64 +++----
 .../streams/LoggerBufferedInputStream.java      |  48 ++---
 .../log4j/streams/LoggerBufferedReader.java     |  16 +-
 .../log4j/streams/LoggerInputStream.java        |  32 ++--
 .../log4j/streams/LoggerOutputStream.java       |  74 ++++----
 .../log4j/streams/LoggerPrintStream.java        | 184 +++++++++----------
 .../log4j/streams/LoggerPrintWriter.java        | 152 +++++++--------
 .../logging/log4j/streams/LoggerReader.java     |  20 +-
 .../logging/log4j/streams/LoggerStreams.java    | 130 ++++++-------
 .../logging/log4j/streams/LoggerWriter.java     |  40 ++--
 .../log4j/streams/LoggerWriterFilter.java       |  48 ++---
 .../log4j/streams/util/ByteStreamLogger.java    | 110 +++++------
 .../log4j/streams/util/CharStreamLogger.java    |  64 +++----
 .../log4j/streams/AbstractLoggerWriterTest.java |  92 +++++-----
 .../log4j/streams/AbstractStreamTest.java       |  18 +-
 ...LoggerBufferedInputStreamCallerInfoTest.java |  20 +-
 .../LoggerBufferedReaderCallerInfoTest.java     |  20 +-
 .../LoggerInputStreamCallerInfoTest.java        |  12 +-
 .../log4j/streams/LoggerInputStreamTest.java    |  74 ++++----
 .../log4j/streams/LoggerOutputStreamTest.java   |  78 ++++----
 .../LoggerPrintStreamCallerInfoTest.java        |  66 +++----
 .../log4j/streams/LoggerPrintStreamTest.java    |  40 ++--
 .../LoggerPrintWriterCallerInfoTest.java        |  66 +++----
 .../log4j/streams/LoggerPrintWriterTest.java    |  40 ++--
 .../streams/LoggerReaderCallerInfoTest.java     |  12 +-
 .../logging/log4j/streams/LoggerReaderTest.java |  74 ++++----
 .../streams/LoggerStreamsCallerInfoTesting.java |  18 +-
 28 files changed, 861 insertions(+), 861 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/30ef44b5/log4j-streams/src/main/java/org/apache/logging/log4j/streams/ByteStreamLogger.java
----------------------------------------------------------------------
diff --git a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/ByteStreamLogger.java b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/ByteStreamLogger.java
index 80f401c..83e8c3b 100644
--- a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/ByteStreamLogger.java
+++ b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/ByteStreamLogger.java
@@ -28,8 +28,33 @@ import org.apache.logging.log4j.Marker;
 import org.apache.logging.log4j.spi.ExtendedLogger;
 
 public class ByteStreamLogger {
-    private static final int BUFFER_SIZE = 1024;
+    private class ByteBufferInputStream extends InputStream {
+
+        @Override
+        public int read() throws IOException {
+            buf.flip();
+            int result = -1;
+            if (buf.limit() > 0) {
+                result = buf.get() & 0xFF;
+            }
+            buf.compact();
+            return result;
+        }
+
+        @Override
+        public int read(final byte[] bytes, final int off, final int len) throws IOException {
+            buf.flip();
+            int result = -1;
+            if (buf.limit() > 0) {
+                result = Math.min(len, buf.limit());
+                buf.get(bytes, off, result);
+            }
+            buf.compact();
+            return result;
+        }
+    }
 
+    private static final int BUFFER_SIZE = 1024;
     private final ExtendedLogger logger;
     private final Level level;
     private final Marker marker;
@@ -38,6 +63,7 @@ public class ByteStreamLogger {
     private final char[] msgBuf = new char[BUFFER_SIZE];
     private final StringBuilder msg = new StringBuilder();
     private boolean closed;
+
     private final ByteBuffer buf = ByteBuffer.allocate(BUFFER_SIZE);
 
     public ByteStreamLogger(final ExtendedLogger logger, final Level level, final Marker marker, final Charset charset) {
@@ -48,35 +74,6 @@ public class ByteStreamLogger {
         reader = new InputStreamReader(in, charset);
     }
 
-    public void put(final String fqcn, final int b) throws IOException {
-        if (b >= 0) {
-            synchronized (msg) {
-                buf.put((byte) (b & 0xFF));
-                extractMessages(fqcn);
-            }
-        } else {
-            logEnd(fqcn);
-        }
-    }
-
-    public void put(final String fqcn, final byte[] b, int off, int len) throws IOException {
-        if (len >= 0) {
-            synchronized (msg) {
-                while (len > buf.remaining()) {
-                    final int remaining = buf.remaining();
-                    buf.put(b, off, remaining);
-                    len -= remaining;
-                    off += remaining;
-                    extractMessages(fqcn);
-                }
-                buf.put(b, off, len);
-                extractMessages(fqcn);
-            }
-        } else {
-            logEnd(fqcn);
-        }
-    }
-
     public void close(final String fqcn) {
         synchronized (msg) {
             closed = true;
@@ -109,42 +106,45 @@ public class ByteStreamLogger {
             read = reader.read(msgBuf);
         }
     }
-    
-    private void logEnd(final String fqcn) {
-        if (msg.length() > 0) {
-            log(fqcn);
-        }
-    }
 
     private void log(final String fqcn) {
         // convert to string now so async loggers work
         logger.logIfEnabled(fqcn, level, marker, msg.toString());
         msg.setLength(0);
     }
+    
+    private void logEnd(final String fqcn) {
+        if (msg.length() > 0) {
+            log(fqcn);
+        }
+    }
 
-    private class ByteBufferInputStream extends InputStream {
-
-        @Override
-        public int read() throws IOException {
-            buf.flip();
-            int result = -1;
-            if (buf.limit() > 0) {
-                result = buf.get() & 0xFF;
+    public void put(final String fqcn, final byte[] b, int off, int len) throws IOException {
+        if (len >= 0) {
+            synchronized (msg) {
+                while (len > buf.remaining()) {
+                    final int remaining = buf.remaining();
+                    buf.put(b, off, remaining);
+                    len -= remaining;
+                    off += remaining;
+                    extractMessages(fqcn);
+                }
+                buf.put(b, off, len);
+                extractMessages(fqcn);
             }
-            buf.compact();
-            return result;
+        } else {
+            logEnd(fqcn);
         }
+    }
 
-        @Override
-        public int read(final byte[] bytes, final int off, final int len) throws IOException {
-            buf.flip();
-            int result = -1;
-            if (buf.limit() > 0) {
-                result = Math.min(len, buf.limit());
-                buf.get(bytes, off, result);
+    public void put(final String fqcn, final int b) throws IOException {
+        if (b >= 0) {
+            synchronized (msg) {
+                buf.put((byte) (b & 0xFF));
+                extractMessages(fqcn);
             }
-            buf.compact();
-            return result;
+        } else {
+            logEnd(fqcn);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/30ef44b5/log4j-streams/src/main/java/org/apache/logging/log4j/streams/CharStreamLogger.java
----------------------------------------------------------------------
diff --git a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/CharStreamLogger.java b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/CharStreamLogger.java
index 589bfaf..d141752 100644
--- a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/CharStreamLogger.java
+++ b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/CharStreamLogger.java
@@ -36,27 +36,25 @@ public class CharStreamLogger {
         this.marker = marker;
     }
 
-    public void put(final String fqcn, final int c) {
-        if (c >= 0) {
-            synchronized (msg) {
-                if (closed) {
-                    return;
-                }
-                switch (c) {
-                case '\n':
-                    log(fqcn);
-                    break;
-                case '\r':
-                    break;
-                default:
-                    msg.append((char) c);
-                }
-            }
-        } else {
+    public void close(final String fqcn) {
+        synchronized (msg) {
+            closed = true;
             logEnd(fqcn);
         }
     }
 
+    private void log(final String fqcn) {
+        logger.logIfEnabled(fqcn, level, marker, msg.toString()); // convert to string now so async loggers
+                                                         // work
+        msg.setLength(0);
+    }
+
+    private void logEnd(final String fqcn) {
+        if (msg.length() > 0) {
+            log(fqcn);
+        }
+    }
+
     public void put(final String fqcn, final char[] cbuf, final int off, final int len) {
         put(fqcn, CharBuffer.wrap(cbuf), off, len);
     }
@@ -89,22 +87,24 @@ public class CharStreamLogger {
         }
     }
 
-    public void close(final String fqcn) {
-        synchronized (msg) {
-            closed = true;
+    public void put(final String fqcn, final int c) {
+        if (c >= 0) {
+            synchronized (msg) {
+                if (closed) {
+                    return;
+                }
+                switch (c) {
+                case '\n':
+                    log(fqcn);
+                    break;
+                case '\r':
+                    break;
+                default:
+                    msg.append((char) c);
+                }
+            }
+        } else {
             logEnd(fqcn);
         }
     }
-
-    private void logEnd(final String fqcn) {
-        if (msg.length() > 0) {
-            log(fqcn);
-        }
-    }
-
-    private void log(final String fqcn) {
-        logger.logIfEnabled(fqcn, level, marker, msg.toString()); // convert to string now so async loggers
-                                                         // work
-        msg.setLength(0);
-    }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/30ef44b5/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerBufferedInputStream.java
----------------------------------------------------------------------
diff --git a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerBufferedInputStream.java b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerBufferedInputStream.java
index c60ee1e..26f59ff 100644
--- a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerBufferedInputStream.java
+++ b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerBufferedInputStream.java
@@ -30,52 +30,52 @@ import org.apache.logging.log4j.spi.ExtendedLogger;
 public class LoggerBufferedInputStream extends BufferedInputStream {
     private static final String FQCN = LoggerBufferedInputStream.class.getName();
 
-    public LoggerBufferedInputStream(final InputStream in, final Logger logger, final Level level) {
-        this(in, (ExtendedLogger) logger, FQCN, level, null);
+    public LoggerBufferedInputStream(final InputStream in, final Charset charset, final ExtendedLogger logger, final String fqcn, final Level level, final Marker marker) {
+        super(new LoggerInputStream(in, charset, logger, fqcn, level, marker));
     }
 
-    public LoggerBufferedInputStream(final InputStream in, final Charset charset, final Logger logger, final Level level) {
-        this(in, charset, (ExtendedLogger) logger, FQCN, level, null);
+    public LoggerBufferedInputStream(final InputStream in, final Charset charset, final int sz, final ExtendedLogger logger, final String fqcn, final Level level, final Marker marker) {
+        super(new LoggerInputStream(in, charset, logger, fqcn, level, marker), sz);
     }
 
-    public LoggerBufferedInputStream(final InputStream in, final Logger logger, final Level level, final Marker marker) {
-        this(in, (ExtendedLogger) logger, FQCN, level, marker);
+    public LoggerBufferedInputStream(final InputStream in, final Charset charset, final int sz, final Logger logger, final Level level) {
+        this(in, charset, sz, (ExtendedLogger) logger, FQCN, level, null);
     }
 
-    public LoggerBufferedInputStream(final InputStream in, final Charset charset, final Logger logger, final Level level, final Marker marker) {
-        this(in, charset, (ExtendedLogger) logger, FQCN, level, marker);
+    public LoggerBufferedInputStream(final InputStream in, final Charset charset, final int sz, final Logger logger, final Level level, final Marker marker) {
+        this(in, charset, sz, (ExtendedLogger) logger, FQCN, level, marker);
     }
 
-    public LoggerBufferedInputStream(final InputStream in, final int sz, final Logger logger, final Level level) {
-        this(in, sz, (ExtendedLogger) logger, FQCN, level, null);
+    public LoggerBufferedInputStream(final InputStream in, final Charset charset, final Logger logger, final Level level) {
+        this(in, charset, (ExtendedLogger) logger, FQCN, level, null);
     }
 
-    public LoggerBufferedInputStream(final InputStream in, final Charset charset, final int sz, final Logger logger, final Level level) {
-        this(in, charset, sz, (ExtendedLogger) logger, FQCN, level, null);
+    public LoggerBufferedInputStream(final InputStream in, final Charset charset, final Logger logger, final Level level, final Marker marker) {
+        this(in, charset, (ExtendedLogger) logger, FQCN, level, marker);
     }
 
-    public LoggerBufferedInputStream(final InputStream in, final int sz, final Logger logger, final Level level, final Marker marker) {
-        this(in, sz, (ExtendedLogger) logger, FQCN, level, marker);
+    public LoggerBufferedInputStream(final InputStream in, final ExtendedLogger logger, final String fqcn, final Level level, final Marker marker) {
+        this(in, Charset.defaultCharset(), logger, fqcn, level, marker);
     }
 
-    public LoggerBufferedInputStream(final InputStream in, final Charset charset, final int sz, final Logger logger, final Level level, final Marker marker) {
-        this(in, charset, sz, (ExtendedLogger) logger, FQCN, level, marker);
+    public LoggerBufferedInputStream(final InputStream in, final int sz, final ExtendedLogger logger, final String fqcn, final Level level, final Marker marker) {
+        this(in, Charset.defaultCharset(), sz, logger, fqcn, level, marker);
     }
 
-    public LoggerBufferedInputStream(final InputStream in, final ExtendedLogger logger, final String fqcn, final Level level, final Marker marker) {
-        this(in, Charset.defaultCharset(), logger, fqcn, level, marker);
+    public LoggerBufferedInputStream(final InputStream in, final int sz, final Logger logger, final Level level) {
+        this(in, sz, (ExtendedLogger) logger, FQCN, level, null);
     }
 
-    public LoggerBufferedInputStream(final InputStream in, final Charset charset, final ExtendedLogger logger, final String fqcn, final Level level, final Marker marker) {
-        super(new LoggerInputStream(in, charset, logger, fqcn, level, marker));
+    public LoggerBufferedInputStream(final InputStream in, final int sz, final Logger logger, final Level level, final Marker marker) {
+        this(in, sz, (ExtendedLogger) logger, FQCN, level, marker);
     }
 
-    public LoggerBufferedInputStream(final InputStream in, final int sz, final ExtendedLogger logger, final String fqcn, final Level level, final Marker marker) {
-        this(in, Charset.defaultCharset(), sz, logger, fqcn, level, marker);
+    public LoggerBufferedInputStream(final InputStream in, final Logger logger, final Level level) {
+        this(in, (ExtendedLogger) logger, FQCN, level, null);
     }
     
-    public LoggerBufferedInputStream(final InputStream in, final Charset charset, final int sz, final ExtendedLogger logger, final String fqcn, final Level level, final Marker marker) {
-        super(new LoggerInputStream(in, charset, logger, fqcn, level, marker), sz);
+    public LoggerBufferedInputStream(final InputStream in, final Logger logger, final Level level, final Marker marker) {
+        this(in, (ExtendedLogger) logger, FQCN, level, marker);
     }
     
     @Override

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/30ef44b5/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerBufferedReader.java
----------------------------------------------------------------------
diff --git a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerBufferedReader.java b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerBufferedReader.java
index 16d998c..74651a2 100644
--- a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerBufferedReader.java
+++ b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerBufferedReader.java
@@ -30,12 +30,12 @@ import org.apache.logging.log4j.spi.ExtendedLogger;
 public class LoggerBufferedReader extends BufferedReader {
     private static final String FQCN = LoggerBufferedReader.class.getName();
 
-    public LoggerBufferedReader(final Reader reader, final Logger logger, final Level level) {
-        this(reader, (ExtendedLogger) logger, FQCN, level, null);
+    public LoggerBufferedReader(final Reader reader, final ExtendedLogger logger, final String fqcn, final Level level, final Marker marker) {
+        super(new LoggerReader(reader, logger, FQCN, level, marker));
     }
 
-    public LoggerBufferedReader(final Reader reader, final Logger logger, final Level level, final Marker marker) {
-        this(reader, (ExtendedLogger) logger, FQCN, level, marker);
+    public LoggerBufferedReader(final Reader reader, final int sz, final ExtendedLogger logger, final String fqcn, final Level level, final Marker marker) {
+        super(new LoggerReader(reader, logger, FQCN, level, marker), sz);
     }
 
     public LoggerBufferedReader(final Reader reader, final int sz, final Logger logger, final Level level) {
@@ -46,12 +46,12 @@ public class LoggerBufferedReader extends BufferedReader {
         this(reader, sz, (ExtendedLogger) logger, FQCN, level, marker);
     }
 
-    public LoggerBufferedReader(final Reader reader, final ExtendedLogger logger, final String fqcn, final Level level, final Marker marker) {
-        super(new LoggerReader(reader, logger, FQCN, level, marker));
+    public LoggerBufferedReader(final Reader reader, final Logger logger, final Level level) {
+        this(reader, (ExtendedLogger) logger, FQCN, level, null);
     }
 
-    public LoggerBufferedReader(final Reader reader, final int sz, final ExtendedLogger logger, final String fqcn, final Level level, final Marker marker) {
-        super(new LoggerReader(reader, logger, FQCN, level, marker), sz);
+    public LoggerBufferedReader(final Reader reader, final Logger logger, final Level level, final Marker marker) {
+        this(reader, (ExtendedLogger) logger, FQCN, level, marker);
     }
     
     @Override

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/30ef44b5/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerInputStream.java
----------------------------------------------------------------------
diff --git a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerInputStream.java b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerInputStream.java
index f36dab6..57a59bd 100644
--- a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerInputStream.java
+++ b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerInputStream.java
@@ -38,26 +38,32 @@ public class LoggerInputStream extends FilterInputStream {
     private final String fqcn;
     private final ByteStreamLogger logger;
 
-    public LoggerInputStream(final InputStream in, final Logger logger, final Level level) {
-        this(in, Charset.defaultCharset(), (ExtendedLogger) logger, FQCN, level, null);
+    public LoggerInputStream(final InputStream in, final Charset charset, final ExtendedLogger logger, final String fqcn, final Level level, final Marker marker) {
+        super(in);
+        this.logger = new ByteStreamLogger(logger, level, marker, charset);
+        this.fqcn = fqcn;
     }
 
     public LoggerInputStream(final InputStream in, final Charset charset, final Logger logger, final Level level) {
         this(in, charset, (ExtendedLogger) logger, FQCN, level, null);
     }
 
-    public LoggerInputStream(final InputStream in, final Logger logger, final Level level, final Marker marker) {
-        this(in, Charset.defaultCharset(), (ExtendedLogger) logger, FQCN, level, marker);
-    }
-
     public LoggerInputStream(final InputStream in, final Charset charset, final Logger logger, final Level level, final Marker marker) {
         this(in, charset, (ExtendedLogger) logger, FQCN, level, marker);
     }
 
-    public LoggerInputStream(final InputStream in, final Charset charset, final ExtendedLogger logger, final String fqcn, final Level level, final Marker marker) {
-        super(in);
-        this.logger = new ByteStreamLogger(logger, level, marker, charset);
-        this.fqcn = fqcn;
+    public LoggerInputStream(final InputStream in, final Logger logger, final Level level) {
+        this(in, Charset.defaultCharset(), (ExtendedLogger) logger, FQCN, level, null);
+    }
+
+    public LoggerInputStream(final InputStream in, final Logger logger, final Level level, final Marker marker) {
+        this(in, Charset.defaultCharset(), (ExtendedLogger) logger, FQCN, level, marker);
+    }
+
+    @Override
+    public void close() throws IOException {
+        logger.close(fqcn);
+        super.close();
     }
 
     @Override
@@ -80,12 +86,6 @@ public class LoggerInputStream extends FilterInputStream {
     }
 
     @Override
-    public void close() throws IOException {
-        logger.close(fqcn);
-        super.close();
-    }
-
-    @Override
     public String toString() {
         return LoggerInputStream.class.getSimpleName() + "{stream=" + in + '}';
     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/30ef44b5/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerOutputStream.java
----------------------------------------------------------------------
diff --git a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerOutputStream.java b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerOutputStream.java
index 609fad2..4b11415 100644
--- a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerOutputStream.java
+++ b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerOutputStream.java
@@ -41,86 +41,86 @@ public class LoggerOutputStream extends OutputStream {
     private final ByteStreamLogger logger;
     private final String fqcn;
 
-    public LoggerOutputStream(final Logger logger, final Level level) {
-        this(null, Charset.defaultCharset(), (ExtendedLogger) logger, FQCN, level, null);
-    }
-
     public LoggerOutputStream(final Charset charset, final Logger logger, final Level level) {
         this(null, charset, (ExtendedLogger) logger, FQCN, level, null);
     }
 
-    public LoggerOutputStream(final Logger logger, final Level level, final Marker marker) {
-        this(null, Charset.defaultCharset(), (ExtendedLogger) logger, FQCN, level, marker);
-    }
-
     public LoggerOutputStream(final Charset charset, final Logger logger, final Level level, final Marker marker) {
         this(null, charset, (ExtendedLogger) logger, FQCN, level, marker);
     }
 
-    public LoggerOutputStream(final OutputStream out, final Logger logger, final Level level) {
-        this(out, Charset.defaultCharset(), (ExtendedLogger) logger, FQCN, level, null);
+    public LoggerOutputStream(final Logger logger, final Level level) {
+        this(null, Charset.defaultCharset(), (ExtendedLogger) logger, FQCN, level, null);
     }
 
-    public LoggerOutputStream(final OutputStream out, final Charset charset, final Logger logger, final Level level) {
-        this(out, charset, (ExtendedLogger) logger, FQCN, level, null);
+    public LoggerOutputStream(final Logger logger, final Level level, final Marker marker) {
+        this(null, Charset.defaultCharset(), (ExtendedLogger) logger, FQCN, level, marker);
     }
 
-    public LoggerOutputStream(final OutputStream out, final Logger logger, final Level level, final Marker marker) {
-        this(out, Charset.defaultCharset(), (ExtendedLogger) logger, FQCN, level, marker);
+    public LoggerOutputStream(final OutputStream out, final Charset charset, final ExtendedLogger logger, final String fqcn, final Level level,
+            final Marker marker) {
+        this.out = out;
+        this.logger = new ByteStreamLogger(logger, level, marker, charset);
+        this.fqcn = fqcn;
+    }
+
+    public LoggerOutputStream(final OutputStream out, final Charset charset, final Logger logger, final Level level) {
+        this(out, charset, (ExtendedLogger) logger, FQCN, level, null);
     }
 
     public LoggerOutputStream(final OutputStream out, final Charset charset, final Logger logger, final Level level, final Marker marker) {
         this(out, charset, (ExtendedLogger) logger, FQCN, level, marker);
     }
 
-    public LoggerOutputStream(final OutputStream out, final Charset charset, final ExtendedLogger logger, final String fqcn, final Level level,
-            final Marker marker) {
-        this.out = out;
-        this.logger = new ByteStreamLogger(logger, level, marker, charset);
-        this.fqcn = fqcn;
+    public LoggerOutputStream(final OutputStream out, final Logger logger, final Level level) {
+        this(out, Charset.defaultCharset(), (ExtendedLogger) logger, FQCN, level, null);
+    }
+
+    public LoggerOutputStream(final OutputStream out, final Logger logger, final Level level, final Marker marker) {
+        this(out, Charset.defaultCharset(), (ExtendedLogger) logger, FQCN, level, marker);
     }
 
     @Override
-    public void write(final int b) throws IOException {
+    public void close() throws IOException {
         if (out != null) {
-            out.write(b);
+            out.close();
         }
-        logger.put(fqcn, (byte) (b & 0xFF));
+        logger.close(fqcn);
     }
 
     @Override
-    public void write(final byte[] b) throws IOException {
+    public void flush() throws IOException {
         if (out != null) {
-            out.write(b);
+            out.flush();
         }
-        logger.put(fqcn, b, 0, b.length);
     }
 
     @Override
-    public void write(final byte[] b, final int off, final int len) throws IOException {
-        if (out != null) {
-            out.write(b, off, len);
-        }
-        logger.put(fqcn, b, off, len);
+    public String toString() {
+        return LoggerOutputStream.class.getSimpleName() + "{stream=" + out + '}';
     }
 
     @Override
-    public void flush() throws IOException {
+    public void write(final byte[] b) throws IOException {
         if (out != null) {
-            out.flush();
+            out.write(b);
         }
+        logger.put(fqcn, b, 0, b.length);
     }
 
     @Override
-    public void close() throws IOException {
+    public void write(final byte[] b, final int off, final int len) throws IOException {
         if (out != null) {
-            out.close();
+            out.write(b, off, len);
         }
-        logger.close(fqcn);
+        logger.put(fqcn, b, off, len);
     }
 
     @Override
-    public String toString() {
-        return LoggerOutputStream.class.getSimpleName() + "{stream=" + out + '}';
+    public void write(final int b) throws IOException {
+        if (out != null) {
+            out.write(b);
+        }
+        logger.put(fqcn, (byte) (b & 0xFF));
     }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/30ef44b5/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerPrintStream.java
----------------------------------------------------------------------
diff --git a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerPrintStream.java b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerPrintStream.java
index 5829a8d..fe171b1 100644
--- a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerPrintStream.java
+++ b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerPrintStream.java
@@ -39,84 +39,87 @@ import org.apache.logging.log4j.spi.ExtendedLogger;
 public class LoggerPrintStream extends PrintStream {
     private static final String FQCN = LoggerPrintStream.class.getName();
 
-    public LoggerPrintStream(final Logger logger, final Level level) {
-        this(null, false, (ExtendedLogger) logger, FQCN, level, null);
-    }
-
     public LoggerPrintStream(final Charset charset, final Logger logger, final Level level) throws UnsupportedEncodingException {
         this(null, false, charset, (ExtendedLogger) logger, FQCN, level, null);
     }
 
-    public LoggerPrintStream(final Logger logger, final Level level, final Marker marker) {
-        this(null, false, (ExtendedLogger) logger, FQCN, level, marker);
-    }
-
     public LoggerPrintStream(final Charset charset, final Logger logger, final Level level, final Marker marker) throws UnsupportedEncodingException {
         this(null, false, charset, (ExtendedLogger) logger, FQCN, level, marker);
     }
 
-    public LoggerPrintStream(final OutputStream out, final Logger logger, final Level level) {
-        this(out, false, (ExtendedLogger) logger, FQCN, level, null);
+    public LoggerPrintStream(final Logger logger, final Level level) {
+        this(null, false, (ExtendedLogger) logger, FQCN, level, null);
     }
 
-    public LoggerPrintStream(final OutputStream out, final Charset charset, final Logger logger, final Level level) throws UnsupportedEncodingException {
-        this(out, false, charset, (ExtendedLogger) logger, FQCN, level, null);
+    public LoggerPrintStream(final Logger logger, final Level level, final Marker marker) {
+        this(null, false, (ExtendedLogger) logger, FQCN, level, marker);
     }
 
-    public LoggerPrintStream(final OutputStream out, final Logger logger, final Level level, final Marker marker) {
-        this(out, false, (ExtendedLogger) logger, FQCN, level, marker);
+    public LoggerPrintStream(final OutputStream out, final boolean autoFlush, final Charset charset, final ExtendedLogger logger, final String fqcn,
+            final Level level, final Marker marker) throws UnsupportedEncodingException {
+        super(new LoggerOutputStream(out, charset, logger, fqcn, level, marker), autoFlush, charset.name());
     }
 
-    public LoggerPrintStream(final OutputStream out, final Charset charset, final Logger logger, final Level level, final Marker marker)
+    public LoggerPrintStream(final OutputStream out, final boolean autoFlush, final Charset charset, final Logger logger, final Level level)
             throws UnsupportedEncodingException {
-        this(out, false, charset, (ExtendedLogger) logger, FQCN, level, marker);
+        this(out, autoFlush, charset, (ExtendedLogger) logger, FQCN, level, null);
     }
 
-    public LoggerPrintStream(final OutputStream out, final boolean autoFlush, final Logger logger, final Level level) {
-        this(out, autoFlush, (ExtendedLogger) logger, FQCN, level, null);
+    public LoggerPrintStream(final OutputStream out, final boolean autoFlush, final Charset charset, final Logger logger, final Level level, final Marker marker)
+            throws UnsupportedEncodingException {
+        this(out, autoFlush, charset, (ExtendedLogger) logger, FQCN, level, marker);
     }
 
-    public LoggerPrintStream(final OutputStream out, final boolean autoFlush, final Charset charset, final Logger logger, final Level level)
-            throws UnsupportedEncodingException {
-        this(out, autoFlush, charset, (ExtendedLogger) logger, FQCN, level, null);
+    public LoggerPrintStream(final OutputStream out, final boolean autoFlush, final ExtendedLogger logger, final String fqcn, final Level level, final Marker marker) {
+        super(new LoggerOutputStream(out, Charset.defaultCharset(), logger, fqcn, level, marker), autoFlush);
+    }
+
+    public LoggerPrintStream(final OutputStream out, final boolean autoFlush, final Logger logger, final Level level) {
+        this(out, autoFlush, (ExtendedLogger) logger, FQCN, level, null);
     }
 
     public LoggerPrintStream(final OutputStream out, final boolean autoFlush, final Logger logger, final Level level, final Marker marker) {
         this(out, autoFlush, (ExtendedLogger) logger, FQCN, level, marker);
     }
 
-    public LoggerPrintStream(final OutputStream out, final boolean autoFlush, final Charset charset, final Logger logger, final Level level, final Marker marker)
+    public LoggerPrintStream(final OutputStream out, final Charset charset, final Logger logger, final Level level) throws UnsupportedEncodingException {
+        this(out, false, charset, (ExtendedLogger) logger, FQCN, level, null);
+    }
+
+    public LoggerPrintStream(final OutputStream out, final Charset charset, final Logger logger, final Level level, final Marker marker)
             throws UnsupportedEncodingException {
-        this(out, autoFlush, charset, (ExtendedLogger) logger, FQCN, level, marker);
+        this(out, false, charset, (ExtendedLogger) logger, FQCN, level, marker);
     }
 
-    public LoggerPrintStream(final OutputStream out, final boolean autoFlush, final ExtendedLogger logger, final String fqcn, final Level level, final Marker marker) {
-        super(new LoggerOutputStream(out, Charset.defaultCharset(), logger, fqcn, level, marker), autoFlush);
+    public LoggerPrintStream(final OutputStream out, final Logger logger, final Level level) {
+        this(out, false, (ExtendedLogger) logger, FQCN, level, null);
     }
 
-    public LoggerPrintStream(final OutputStream out, final boolean autoFlush, final Charset charset, final ExtendedLogger logger, final String fqcn,
-            final Level level, final Marker marker) throws UnsupportedEncodingException {
-        super(new LoggerOutputStream(out, charset, logger, fqcn, level, marker), autoFlush, charset.name());
+    public LoggerPrintStream(final OutputStream out, final Logger logger, final Level level, final Marker marker) {
+        this(out, false, (ExtendedLogger) logger, FQCN, level, marker);
     }
 
     @Override
-    public void write(final int b) {
-        super.write(b);
+    public LoggerPrintStream append(final char c) {
+        super.append(c);
+        return this;
     }
 
     @Override
-    public void write(final byte[] b) throws IOException {
-        super.write(b);
+    public LoggerPrintStream append(final CharSequence csq) {
+        super.append(csq);
+        return this;
     }
 
     @Override
-    public void write(final byte[] b, final int off, final int len) {
-        super.write(b, off, len);
+    public LoggerPrintStream append(final CharSequence csq, final int start, final int end) {
+        super.append(csq, start, end);
+        return this;
     }
 
     @Override
-    public void flush() {
-        super.flush();
+    public boolean checkError() {
+        return super.checkError();
     }
 
     @Override
@@ -125,6 +128,23 @@ public class LoggerPrintStream extends PrintStream {
     }
 
     @Override
+    public void flush() {
+        super.flush();
+    }
+
+    @Override
+    public LoggerPrintStream format(final Locale l, final String format, final Object... args) {
+        super.format(l, format, args);
+        return this;
+    }
+
+    @Override
+    public LoggerPrintStream format(final String format, final Object... args) {
+        super.format(format, args);
+        return this;
+    }
+
+    @Override
     public void print(final boolean b) {
         super.print(b);
     }
@@ -135,13 +155,13 @@ public class LoggerPrintStream extends PrintStream {
     }
 
     @Override
-    public void print(final int i) {
-        super.print(i);
+    public void print(final char[] s) {
+        super.print(s);
     }
 
     @Override
-    public void print(final long l) {
-        super.print(l);
+    public void print(final double d) {
+        super.print(d);
     }
 
     @Override
@@ -150,13 +170,18 @@ public class LoggerPrintStream extends PrintStream {
     }
 
     @Override
-    public void print(final double d) {
-        super.print(d);
+    public void print(final int i) {
+        super.print(i);
     }
 
     @Override
-    public void print(final char[] s) {
-        super.print(s);
+    public void print(final long l) {
+        super.print(l);
+    }
+
+    @Override
+    public void print(final Object obj) {
+        super.print(obj);
     }
 
     @Override
@@ -165,8 +190,15 @@ public class LoggerPrintStream extends PrintStream {
     }
 
     @Override
-    public void print(final Object obj) {
-        super.print(obj);
+    public LoggerPrintStream printf(final Locale l, final String format, final Object... args) {
+        super.printf(l, format, args);
+        return this;
+    }
+
+    @Override
+    public LoggerPrintStream printf(final String format, final Object... args) {
+        super.printf(format, args);
+        return this;
     }
 
     @Override
@@ -185,12 +217,12 @@ public class LoggerPrintStream extends PrintStream {
     }
 
     @Override
-    public void println(final int x) {
+    public void println(final char[] x) {
         super.println(x);
     }
 
     @Override
-    public void println(final long x) {
+    public void println(final double x) {
         super.println(x);
     }
 
@@ -200,17 +232,12 @@ public class LoggerPrintStream extends PrintStream {
     }
 
     @Override
-    public void println(final double x) {
-        super.println(x);
-    }
-
-    @Override
-    public void println(final char[] x) {
+    public void println(final int x) {
         super.println(x);
     }
 
     @Override
-    public void println(final String x) {
+    public void println(final long x) {
         super.println(x);
     }
 
@@ -220,54 +247,27 @@ public class LoggerPrintStream extends PrintStream {
     }
 
     @Override
-    public LoggerPrintStream printf(final String format, final Object... args) {
-        super.printf(format, args);
-        return this;
-    }
-
-    @Override
-    public LoggerPrintStream printf(final Locale l, final String format, final Object... args) {
-        super.printf(l, format, args);
-        return this;
-    }
-
-    @Override
-    public LoggerPrintStream append(final char c) {
-        super.append(c);
-        return this;
-    }
-
-    @Override
-    public LoggerPrintStream append(final CharSequence csq) {
-        super.append(csq);
-        return this;
-    }
-
-    @Override
-    public LoggerPrintStream append(final CharSequence csq, final int start, final int end) {
-        super.append(csq, start, end);
-        return this;
+    public void println(final String x) {
+        super.println(x);
     }
 
     @Override
-    public LoggerPrintStream format(final String format, final Object... args) {
-        super.format(format, args);
-        return this;
+    public String toString() {
+        return LoggerPrintStream.class.getSimpleName() + "{stream=" + out + '}';
     }
 
     @Override
-    public LoggerPrintStream format(final Locale l, final String format, final Object... args) {
-        super.format(l, format, args);
-        return this;
+    public void write(final byte[] b) throws IOException {
+        super.write(b);
     }
 
     @Override
-    public boolean checkError() {
-        return super.checkError();
+    public void write(final byte[] b, final int off, final int len) {
+        super.write(b, off, len);
     }
 
     @Override
-    public String toString() {
-        return LoggerPrintStream.class.getSimpleName() + "{stream=" + out + '}';
+    public void write(final int b) {
+        super.write(b);
     }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/30ef44b5/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerPrintWriter.java
----------------------------------------------------------------------
diff --git a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerPrintWriter.java b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerPrintWriter.java
index 531a08b..e896329 100644
--- a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerPrintWriter.java
+++ b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerPrintWriter.java
@@ -34,6 +34,12 @@ import org.apache.logging.log4j.spi.ExtendedLogger;
 public class LoggerPrintWriter extends PrintWriter {
     private static final String FQCN = LoggerPrintWriter.class.getName();
 
+    @SuppressWarnings("resource")
+    public LoggerPrintWriter(final ExtendedLogger logger, final boolean autoFlush, final String fqcn,
+            final Level level, final Marker marker) {
+        super(new LoggerWriter(logger, fqcn, level, marker), autoFlush);
+    }
+
     public LoggerPrintWriter(final Logger logger, final Level level) {
         this((ExtendedLogger) logger, false, FQCN, level, null);
     }
@@ -42,12 +48,10 @@ public class LoggerPrintWriter extends PrintWriter {
         this((ExtendedLogger) logger, false, FQCN, level, marker);
     }
 
-    public LoggerPrintWriter(final Writer writer, final Logger logger, final Level level) {
-        this(writer, false, (ExtendedLogger) logger, FQCN, level, null);
-    }
-
-    public LoggerPrintWriter(final Writer writer, final Logger logger, final Level level, final Marker marker) {
-        this(writer, false, (ExtendedLogger) logger, FQCN, level, marker);
+    @SuppressWarnings("resource")
+    public LoggerPrintWriter(final Writer writer, final boolean autoFlush, final ExtendedLogger logger, final String fqcn,
+            final Level level, final Marker marker) {
+        super(new LoggerWriterFilter(writer, logger, fqcn, level, marker), autoFlush);
     }
 
     public LoggerPrintWriter(final Writer writer, final boolean autoFlush, final Logger logger, final Level level) {
@@ -58,41 +62,40 @@ public class LoggerPrintWriter extends PrintWriter {
         this(writer, autoFlush, (ExtendedLogger) logger, FQCN, level, marker);
     }
 
-    @SuppressWarnings("resource")
-    public LoggerPrintWriter(final Writer writer, final boolean autoFlush, final ExtendedLogger logger, final String fqcn,
-            final Level level, final Marker marker) {
-        super(new LoggerWriterFilter(writer, logger, fqcn, level, marker), autoFlush);
+    public LoggerPrintWriter(final Writer writer, final Logger logger, final Level level) {
+        this(writer, false, (ExtendedLogger) logger, FQCN, level, null);
     }
 
-    @SuppressWarnings("resource")
-    public LoggerPrintWriter(final ExtendedLogger logger, final boolean autoFlush, final String fqcn,
-            final Level level, final Marker marker) {
-        super(new LoggerWriter(logger, fqcn, level, marker), autoFlush);
+    public LoggerPrintWriter(final Writer writer, final Logger logger, final Level level, final Marker marker) {
+        this(writer, false, (ExtendedLogger) logger, FQCN, level, marker);
     }
 
     @Override
-    public void write(final int c) {
-        super.write(c);
+    public LoggerPrintWriter append(final char c) {
+        super.append(c);
+        return this;
     }
     
     @Override
-    public void write(final char[] buf) {
-        super.write(buf);
+    public LoggerPrintWriter append(final CharSequence csq) {
+        super.append(csq);
+        return this;
     }
     
     @Override
-    public void write(final char[] buf, final int off, final int len) {
-        super.write(buf, off, len);
+    public LoggerPrintWriter append(final CharSequence csq, final int start, final int end) {
+        super.append(csq, start, end);
+        return this;
     }
     
     @Override
-    public void write(final String s) {
-        super.write(s);
+    public boolean checkError() {
+        return super.checkError();
     }
     
     @Override
-    public void write(final String s, final int off, final int len) {
-        super.write(s, off, len);
+    public void close() {
+        super.close();
     }
 
     @Override
@@ -101,8 +104,15 @@ public class LoggerPrintWriter extends PrintWriter {
     }
 
     @Override
-    public void close() {
-        super.close();
+    public LoggerPrintWriter format(final Locale l, final String format, final Object... args) {
+        super.format(l, format, args);
+        return this;
+    }
+
+    @Override
+    public LoggerPrintWriter format(final String format, final Object... args) {
+        super.format(format, args);
+        return this;
     }
 
     @Override
@@ -116,13 +126,13 @@ public class LoggerPrintWriter extends PrintWriter {
     }
 
     @Override
-    public void print(final int i) {
-        super.print(i);
+    public void print(final char[] s) {
+        super.print(s);
     }
 
     @Override
-    public void print(final long l) {
-        super.print(l);
+    public void print(final double d) {
+        super.print(d);
     }
 
     @Override
@@ -131,13 +141,18 @@ public class LoggerPrintWriter extends PrintWriter {
     }
 
     @Override
-    public void print(final double d) {
-        super.print(d);
+    public void print(final int i) {
+        super.print(i);
     }
 
     @Override
-    public void print(final char[] s) {
-        super.print(s);
+    public void print(final long l) {
+        super.print(l);
+    }
+
+    @Override
+    public void print(final Object obj) {
+        super.print(obj);
     }
 
     @Override
@@ -146,8 +161,15 @@ public class LoggerPrintWriter extends PrintWriter {
     }
 
     @Override
-    public void print(final Object obj) {
-        super.print(obj);
+    public LoggerPrintWriter printf(final Locale l, final String format, final Object... args) {
+        super.printf(l, format, args);
+        return this;
+    }
+
+    @Override
+    public LoggerPrintWriter printf(final String format, final Object... args) {
+        super.printf(format, args);
+        return this;
     }
 
     @Override
@@ -166,12 +188,12 @@ public class LoggerPrintWriter extends PrintWriter {
     }
 
     @Override
-    public void println(final int x) {
+    public void println(final char[] x) {
         super.println(x);
     }
 
     @Override
-    public void println(final long x) {
+    public void println(final double x) {
         super.println(x);
     }
 
@@ -181,17 +203,12 @@ public class LoggerPrintWriter extends PrintWriter {
     }
 
     @Override
-    public void println(final double x) {
-        super.println(x);
-    }
-
-    @Override
-    public void println(final char[] x) {
+    public void println(final int x) {
         super.println(x);
     }
 
     @Override
-    public void println(final String x) {
+    public void println(final long x) {
         super.println(x);
     }
 
@@ -201,54 +218,37 @@ public class LoggerPrintWriter extends PrintWriter {
     }
 
     @Override
-    public LoggerPrintWriter printf(final String format, final Object... args) {
-        super.printf(format, args);
-        return this;
-    }
-
-    @Override
-    public LoggerPrintWriter printf(final Locale l, final String format, final Object... args) {
-        super.printf(l, format, args);
-        return this;
-    }
-
-    @Override
-    public LoggerPrintWriter append(final char c) {
-        super.append(c);
-        return this;
+    public void println(final String x) {
+        super.println(x);
     }
 
     @Override
-    public LoggerPrintWriter append(final CharSequence csq) {
-        super.append(csq);
-        return this;
+    public String toString() {
+        return LoggerPrintWriter.class.getSimpleName() + "{stream=" + out + '}';
     }
 
     @Override
-    public LoggerPrintWriter append(final CharSequence csq, final int start, final int end) {
-        super.append(csq, start, end);
-        return this;
+    public void write(final char[] buf) {
+        super.write(buf);
     }
 
     @Override
-    public LoggerPrintWriter format(final String format, final Object... args) {
-        super.format(format, args);
-        return this;
+    public void write(final char[] buf, final int off, final int len) {
+        super.write(buf, off, len);
     }
 
     @Override
-    public LoggerPrintWriter format(final Locale l, final String format, final Object... args) {
-        super.format(l, format, args);
-        return this;
+    public void write(final int c) {
+        super.write(c);
     }
     
     @Override
-    public boolean checkError() {
-        return super.checkError();
+    public void write(final String s) {
+        super.write(s);
     }
 
     @Override
-    public String toString() {
-        return LoggerPrintWriter.class.getSimpleName() + "{stream=" + out + '}';
+    public void write(final String s, final int off, final int len) {
+        super.write(s, off, len);
     }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/30ef44b5/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerReader.java
----------------------------------------------------------------------
diff --git a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerReader.java b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerReader.java
index 8432982..39fa6fe 100644
--- a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerReader.java
+++ b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerReader.java
@@ -39,6 +39,12 @@ public class LoggerReader extends FilterReader {
     private final CharStreamLogger logger;
     private final String fqcn;
 
+    public LoggerReader(final Reader reader, final ExtendedLogger logger, final String fqcn, final Level level, final Marker marker) {
+        super(reader);
+        this.logger = new CharStreamLogger(logger, level, marker);
+        this.fqcn = fqcn;
+    }
+
     public LoggerReader(final Reader reader, final Logger logger, final Level level) {
         this(reader, (ExtendedLogger) logger, FQCN, level, null);
     }
@@ -47,10 +53,10 @@ public class LoggerReader extends FilterReader {
         this(reader, (ExtendedLogger) logger, FQCN, level, marker);
     }
 
-    public LoggerReader(final Reader reader, final ExtendedLogger logger, final String fqcn, final Level level, final Marker marker) {
-        super(reader);
-        this.logger = new CharStreamLogger(logger, level, marker);
-        this.fqcn = fqcn;
+    @Override
+    public void close() throws IOException {
+        super.close();
+        logger.close(fqcn);
     }
 
     @Override
@@ -84,12 +90,6 @@ public class LoggerReader extends FilterReader {
     }
 
     @Override
-    public void close() throws IOException {
-        super.close();
-        logger.close(fqcn);
-    }
-
-    @Override
     public String toString() {
         return LoggerReader.class.getSimpleName() + "{stream=" + in + '}';
     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/30ef44b5/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerStreams.java
----------------------------------------------------------------------
diff --git a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerStreams.java b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerStreams.java
index 887cc4d..82bc946 100644
--- a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerStreams.java
+++ b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerStreams.java
@@ -30,24 +30,47 @@ import org.apache.logging.log4j.Marker;
 
 public class LoggerStreams {
 
-    public static Builder trace(final Logger logger) {
-        return new Builder(logger, Level.TRACE, null);
-    }
+    public static class BufferedBuilder {
+        private final Logger logger;
+        private final Level level;
+        private final Marker marker;
+        private final int size;
 
-    public static Builder debug(final Logger logger) {
-        return new Builder(logger, Level.DEBUG, null);
-    }
+        BufferedBuilder(final Logger logger, final Level level, final Marker marker, final int size) {
+            this.logger = logger;
+            this.level = level;
+            this.marker = marker;
+            this.size = size;
+        }
 
-    public static Builder info(final Logger logger) {
-        return new Builder(logger, Level.INFO, null);
-    }
+        public LoggerBufferedInputStream create(final InputStream in) {
+            if (size > 0) {
+                return new LoggerBufferedInputStream(in, size, logger, level, marker);
+            }
+            return new LoggerBufferedInputStream(in, logger, level, marker);
+        }
 
-    public static Builder warn(final Logger logger) {
-        return new Builder(logger, Level.WARN, null);
-    }
+        public LoggerBufferedInputStream create(final InputStream in, final Charset charset) {
+            if (size > 0) {
+                return new LoggerBufferedInputStream(in, charset, size, logger, level, marker);
+            }
+            return new LoggerBufferedInputStream(in, charset, logger, level, marker);
+        }
 
-    public static Builder error(final Logger logger) {
-        return new Builder(logger, Level.ERROR, null);
+        public LoggerBufferedReader create(final Reader reader) {
+            if (size > 0) {
+                return new LoggerBufferedReader(reader, size, logger, level, marker);
+            }
+            return new LoggerBufferedReader(reader, logger, level, marker);
+        }
+
+        public BufferedBuilder marker(final Marker marker) {
+            return new BufferedBuilder(logger, level, marker, size);
+        }
+
+        public BufferedBuilder size(final int size) {
+            return new BufferedBuilder(logger, level, marker, size);
+        }
     }
 
     public static class Builder {
@@ -61,14 +84,6 @@ public class LoggerStreams {
             this.marker = marker;
         }
 
-        public Builder marker(final Marker marker) {
-            return new Builder(logger, level, marker);
-        }
-
-        public PrintingBuilder printing() {
-            return new PrintingBuilder(logger, level, marker, false);
-        }
-
         public BufferedBuilder buffered() {
             return new BufferedBuilder(logger, level, marker, 0);
         }
@@ -76,6 +91,14 @@ public class LoggerStreams {
         public LoggerWriterFilter create(final Writer writer) {
             return new LoggerWriterFilter(writer, logger, level, marker);
         }
+
+        public Builder marker(final Marker marker) {
+            return new Builder(logger, level, marker);
+        }
+
+        public PrintingBuilder printing() {
+            return new PrintingBuilder(logger, level, marker, false);
+        }
     }
 
     public static class PrintingBuilder {
@@ -91,10 +114,6 @@ public class LoggerStreams {
             this.autoFlush = autoFlush;
         }
 
-        public PrintingBuilder marker(final Marker marker) {
-            return new PrintingBuilder(logger, level, marker, autoFlush);
-        }
-
         public PrintingBuilder autoFlush() {
             return autoFlush(true);
         }
@@ -103,10 +122,6 @@ public class LoggerStreams {
             return new PrintingBuilder(logger, level, marker, autoFlush);
         }
 
-        public LoggerPrintWriter create(final Writer writer) {
-            return new LoggerPrintWriter(writer, autoFlush, logger, level, marker);
-        }
-
         public LoggerPrintStream create(final OutputStream out) {
             return new LoggerPrintStream(out, autoFlush, logger, level, marker);
         }
@@ -119,48 +134,33 @@ public class LoggerStreams {
                 throw new IllegalArgumentException("Invalid charset", e);
             }
         }
-    }
-
-    public static class BufferedBuilder {
-        private final Logger logger;
-        private final Level level;
-        private final Marker marker;
-        private final int size;
 
-        BufferedBuilder(final Logger logger, final Level level, final Marker marker, final int size) {
-            this.logger = logger;
-            this.level = level;
-            this.marker = marker;
-            this.size = size;
+        public LoggerPrintWriter create(final Writer writer) {
+            return new LoggerPrintWriter(writer, autoFlush, logger, level, marker);
         }
 
-        public BufferedBuilder marker(final Marker marker) {
-            return new BufferedBuilder(logger, level, marker, size);
+        public PrintingBuilder marker(final Marker marker) {
+            return new PrintingBuilder(logger, level, marker, autoFlush);
         }
+    }
 
-        public BufferedBuilder size(final int size) {
-            return new BufferedBuilder(logger, level, marker, size);
-        }
+    public static Builder debug(final Logger logger) {
+        return new Builder(logger, Level.DEBUG, null);
+    }
 
-        public LoggerBufferedReader create(final Reader reader) {
-            if (size > 0) {
-                return new LoggerBufferedReader(reader, size, logger, level, marker);
-            }
-            return new LoggerBufferedReader(reader, logger, level, marker);
-        }
+    public static Builder error(final Logger logger) {
+        return new Builder(logger, Level.ERROR, null);
+    }
 
-        public LoggerBufferedInputStream create(final InputStream in) {
-            if (size > 0) {
-                return new LoggerBufferedInputStream(in, size, logger, level, marker);
-            }
-            return new LoggerBufferedInputStream(in, logger, level, marker);
-        }
+    public static Builder info(final Logger logger) {
+        return new Builder(logger, Level.INFO, null);
+    }
 
-        public LoggerBufferedInputStream create(final InputStream in, final Charset charset) {
-            if (size > 0) {
-                return new LoggerBufferedInputStream(in, charset, size, logger, level, marker);
-            }
-            return new LoggerBufferedInputStream(in, charset, logger, level, marker);
-        }
+    public static Builder trace(final Logger logger) {
+        return new Builder(logger, Level.TRACE, null);
+    }
+
+    public static Builder warn(final Logger logger) {
+        return new Builder(logger, Level.WARN, null);
     }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/30ef44b5/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerWriter.java
----------------------------------------------------------------------
diff --git a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerWriter.java b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerWriter.java
index 8233d64..63cbfe8 100644
--- a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerWriter.java
+++ b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerWriter.java
@@ -37,22 +37,30 @@ public class LoggerWriter extends Writer {
     private final CharStreamLogger logger;
     private final String fqcn;
 
-    public LoggerWriter(final Logger logger, final Level level, final Marker marker) {
-        this((ExtendedLogger) logger, FQCN, level, marker);
+    public LoggerWriter(final ExtendedLogger logger, final String fqcn, final Level level, final Marker marker) {
+        this.logger = new CharStreamLogger(logger, level, marker);
+        this.fqcn = fqcn;
     }
 
     public LoggerWriter(final Logger logger, final Level level) {
         this((ExtendedLogger) logger, FQCN, level, null);
     }
 
-    public LoggerWriter(final ExtendedLogger logger, final String fqcn, final Level level, final Marker marker) {
-        this.logger = new CharStreamLogger(logger, level, marker);
-        this.fqcn = fqcn;
+    public LoggerWriter(final Logger logger, final Level level, final Marker marker) {
+        this((ExtendedLogger) logger, FQCN, level, marker);
     }
 
     @Override
-    public void write(final int c) throws IOException {
-        logger.put(fqcn, (char) c);
+    public void close() throws IOException {
+        logger.close(fqcn);
+    }
+
+    @Override
+    public void flush() throws IOException {
+    }
+
+    public String toString() {
+        return this.getClass().getSimpleName() + "[fqcn=" + fqcn + ", logger=" + logger + "]";
     }
 
     @Override
@@ -66,6 +74,11 @@ public class LoggerWriter extends Writer {
     }
 
     @Override
+    public void write(final int c) throws IOException {
+        logger.put(fqcn, (char) c);
+    }
+
+    @Override
     public void write(final String str) throws IOException {
         logger.put(fqcn, str, 0, str.length());
     }
@@ -74,17 +87,4 @@ public class LoggerWriter extends Writer {
     public void write(final String str, final int off, final int len) throws IOException {
         logger.put(fqcn, str, off, len);
     }
-
-    @Override
-    public void flush() throws IOException {
-    }
-
-    @Override
-    public void close() throws IOException {
-        logger.close(fqcn);
-    }
-
-    public String toString() {
-        return this.getClass().getSimpleName() + "[fqcn=" + fqcn + ", logger=" + logger + "]";
-    }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/30ef44b5/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerWriterFilter.java
----------------------------------------------------------------------
diff --git a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerWriterFilter.java b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerWriterFilter.java
index 9b7e3a0..f583e5b 100644
--- a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerWriterFilter.java
+++ b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerWriterFilter.java
@@ -38,6 +38,13 @@ public class LoggerWriterFilter extends FilterWriter {
     private final CharStreamLogger logger;
     private final String fqcn;
 
+    public LoggerWriterFilter(final Writer out, final ExtendedLogger logger, final String fqcn, final Level level,
+            final Marker marker) {
+        super(out);
+        this.logger = new CharStreamLogger(logger, level, marker);
+        this.fqcn = fqcn;
+    }
+
     public LoggerWriterFilter(final Writer out, final Logger logger, final Level level) {
         this(out, (ExtendedLogger) logger, FQCN, level, null);
     }
@@ -46,17 +53,20 @@ public class LoggerWriterFilter extends FilterWriter {
         this(out, (ExtendedLogger) logger, FQCN, level, marker);
     }
 
-    public LoggerWriterFilter(final Writer out, final ExtendedLogger logger, final String fqcn, final Level level,
-            final Marker marker) {
-        super(out);
-        this.logger = new CharStreamLogger(logger, level, marker);
-        this.fqcn = fqcn;
+    @Override
+    public void close() throws IOException {
+        out.close();
+        logger.close(fqcn);
     }
 
     @Override
-    public void write(final int c) throws IOException {
-        out.write(c);
-        logger.put(fqcn, (char) c);
+    public void flush() throws IOException {
+        out.flush();
+    }
+
+    @Override
+    public String toString() {
+        return LoggerWriterFilter.class.getSimpleName() + "{writer=" + out + '}';
     }
 
     @Override
@@ -72,6 +82,12 @@ public class LoggerWriterFilter extends FilterWriter {
     }
 
     @Override
+    public void write(final int c) throws IOException {
+        out.write(c);
+        logger.put(fqcn, (char) c);
+    }
+
+    @Override
     public void write(final String str) throws IOException {
         out.write(str);
         logger.put(fqcn, str, 0, str.length());
@@ -82,20 +98,4 @@ public class LoggerWriterFilter extends FilterWriter {
         out.write(str, off, len);
         logger.put(fqcn, str, off, len);
     }
-
-    @Override
-    public void flush() throws IOException {
-        out.flush();
-    }
-
-    @Override
-    public void close() throws IOException {
-        out.close();
-        logger.close(fqcn);
-    }
-
-    @Override
-    public String toString() {
-        return LoggerWriterFilter.class.getSimpleName() + "{writer=" + out + '}';
-    }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/30ef44b5/log4j-streams/src/main/java/org/apache/logging/log4j/streams/util/ByteStreamLogger.java
----------------------------------------------------------------------
diff --git a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/util/ByteStreamLogger.java b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/util/ByteStreamLogger.java
index 06a7cde..655497b 100644
--- a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/util/ByteStreamLogger.java
+++ b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/util/ByteStreamLogger.java
@@ -28,8 +28,33 @@ import org.apache.logging.log4j.Marker;
 import org.apache.logging.log4j.spi.ExtendedLogger;
 
 public class ByteStreamLogger {
-    private static final int BUFFER_SIZE = 1024;
+    private class ByteBufferInputStream extends InputStream {
+
+        @Override
+        public int read() throws IOException {
+            buf.flip();
+            int result = -1;
+            if (buf.limit() > 0) {
+                result = buf.get() & 0xFF;
+            }
+            buf.compact();
+            return result;
+        }
+
+        @Override
+        public int read(final byte[] bytes, final int off, final int len) throws IOException {
+            buf.flip();
+            int result = -1;
+            if (buf.limit() > 0) {
+                result = Math.min(len, buf.limit());
+                buf.get(bytes, off, result);
+            }
+            buf.compact();
+            return result;
+        }
+    }
 
+    private static final int BUFFER_SIZE = 1024;
     private final ExtendedLogger logger;
     private final Level level;
     private final Marker marker;
@@ -38,6 +63,7 @@ public class ByteStreamLogger {
     private final char[] msgBuf = new char[BUFFER_SIZE];
     private final StringBuilder msg = new StringBuilder();
     private boolean closed;
+
     private final ByteBuffer buf = ByteBuffer.allocate(BUFFER_SIZE);
 
     public ByteStreamLogger(final ExtendedLogger logger, final Level level, final Marker marker, final Charset charset) {
@@ -48,35 +74,6 @@ public class ByteStreamLogger {
         reader = new InputStreamReader(in, charset);
     }
 
-    public void put(final String fqcn, final int b) throws IOException {
-        if (b >= 0) {
-            synchronized (msg) {
-                buf.put((byte) (b & 0xFF));
-                extractMessages(fqcn);
-            }
-        } else {
-            logEnd(fqcn);
-        }
-    }
-
-    public void put(final String fqcn, final byte[] b, int off, int len) throws IOException {
-        if (len >= 0) {
-            synchronized (msg) {
-                while (len > buf.remaining()) {
-                    final int remaining = buf.remaining();
-                    buf.put(b, off, remaining);
-                    len -= remaining;
-                    off += remaining;
-                    extractMessages(fqcn);
-                }
-                buf.put(b, off, len);
-                extractMessages(fqcn);
-            }
-        } else {
-            logEnd(fqcn);
-        }
-    }
-
     public void close(final String fqcn) {
         synchronized (msg) {
             closed = true;
@@ -109,42 +106,45 @@ public class ByteStreamLogger {
             read = reader.read(msgBuf);
         }
     }
-    
-    private void logEnd(final String fqcn) {
-        if (msg.length() > 0) {
-            log(fqcn);
-        }
-    }
 
     private void log(final String fqcn) {
         // convert to string now so async loggers work
         logger.logIfEnabled(fqcn, level, marker, msg.toString());
         msg.setLength(0);
     }
+    
+    private void logEnd(final String fqcn) {
+        if (msg.length() > 0) {
+            log(fqcn);
+        }
+    }
 
-    private class ByteBufferInputStream extends InputStream {
-
-        @Override
-        public int read() throws IOException {
-            buf.flip();
-            int result = -1;
-            if (buf.limit() > 0) {
-                result = buf.get() & 0xFF;
+    public void put(final String fqcn, final byte[] b, int off, int len) throws IOException {
+        if (len >= 0) {
+            synchronized (msg) {
+                while (len > buf.remaining()) {
+                    final int remaining = buf.remaining();
+                    buf.put(b, off, remaining);
+                    len -= remaining;
+                    off += remaining;
+                    extractMessages(fqcn);
+                }
+                buf.put(b, off, len);
+                extractMessages(fqcn);
             }
-            buf.compact();
-            return result;
+        } else {
+            logEnd(fqcn);
         }
+    }
 
-        @Override
-        public int read(final byte[] bytes, final int off, final int len) throws IOException {
-            buf.flip();
-            int result = -1;
-            if (buf.limit() > 0) {
-                result = Math.min(len, buf.limit());
-                buf.get(bytes, off, result);
+    public void put(final String fqcn, final int b) throws IOException {
+        if (b >= 0) {
+            synchronized (msg) {
+                buf.put((byte) (b & 0xFF));
+                extractMessages(fqcn);
             }
-            buf.compact();
-            return result;
+        } else {
+            logEnd(fqcn);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/30ef44b5/log4j-streams/src/main/java/org/apache/logging/log4j/streams/util/CharStreamLogger.java
----------------------------------------------------------------------
diff --git a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/util/CharStreamLogger.java b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/util/CharStreamLogger.java
index 3eb0851..71b63ce 100644
--- a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/util/CharStreamLogger.java
+++ b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/util/CharStreamLogger.java
@@ -36,27 +36,25 @@ public class CharStreamLogger {
         this.marker = marker;
     }
 
-    public void put(final String fqcn, final int c) {
-        if (c >= 0) {
-            synchronized (msg) {
-                if (closed) {
-                    return;
-                }
-                switch (c) {
-                case '\n':
-                    log(fqcn);
-                    break;
-                case '\r':
-                    break;
-                default:
-                    msg.append((char) c);
-                }
-            }
-        } else {
+    public void close(final String fqcn) {
+        synchronized (msg) {
+            closed = true;
             logEnd(fqcn);
         }
     }
 
+    private void log(final String fqcn) {
+        // convert to string now so async loggers work
+        logger.logIfEnabled(fqcn, level, marker, msg.toString());
+        msg.setLength(0);
+    }
+
+    private void logEnd(final String fqcn) {
+        if (msg.length() > 0) {
+            log(fqcn);
+        }
+    }
+
     public void put(final String fqcn, final char[] cbuf, final int off, final int len) {
         put(fqcn, CharBuffer.wrap(cbuf), off, len);
     }
@@ -89,22 +87,24 @@ public class CharStreamLogger {
         }
     }
 
-    public void close(final String fqcn) {
-        synchronized (msg) {
-            closed = true;
+    public void put(final String fqcn, final int c) {
+        if (c >= 0) {
+            synchronized (msg) {
+                if (closed) {
+                    return;
+                }
+                switch (c) {
+                case '\n':
+                    log(fqcn);
+                    break;
+                case '\r':
+                    break;
+                default:
+                    msg.append((char) c);
+                }
+            }
+        } else {
             logEnd(fqcn);
         }
     }
-
-    private void logEnd(final String fqcn) {
-        if (msg.length() > 0) {
-            log(fqcn);
-        }
-    }
-
-    private void log(final String fqcn) {
-        // convert to string now so async loggers work
-        logger.logIfEnabled(fqcn, level, marker, msg.toString());
-        msg.setLength(0);
-    }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/30ef44b5/log4j-streams/src/test/java/org/apache/logging/log4j/streams/AbstractLoggerWriterTest.java
----------------------------------------------------------------------
diff --git a/log4j-streams/src/test/java/org/apache/logging/log4j/streams/AbstractLoggerWriterTest.java b/log4j-streams/src/test/java/org/apache/logging/log4j/streams/AbstractLoggerWriterTest.java
index 5d727cb..f62360f 100644
--- a/log4j-streams/src/test/java/org/apache/logging/log4j/streams/AbstractLoggerWriterTest.java
+++ b/log4j-streams/src/test/java/org/apache/logging/log4j/streams/AbstractLoggerWriterTest.java
@@ -44,33 +44,39 @@ public abstract class AbstractLoggerWriterTest extends AbstractStreamTest {
     protected abstract Writer createWriterWrapper();
 
     @Test
-    public void testWrite_CharArray() throws Exception {
-        final char[] chars = FIRST.toCharArray();
-        writer.write(chars);
+    public void testClose_HasRemainingData() throws IOException {
+        writer.write(FIRST);
         assertMessages();
-        writer.write('\n');
+        writer.close();
         assertMessages(FIRST);
         if (wrapped != null) {
-            assertEquals(FIRST + '\n', wrapped.toString());
+            assertEquals(FIRST, wrapped.toString());
         }
     }
 
     @Test
-    public void testWrite_CharArray_Offset_Length() throws Exception {
-        final char[] chars = FIRST.toCharArray();
-        final int middle = chars.length / 2;
-        final int length = chars.length - middle;
-        final String right = new String(chars, middle, length);
-        writer.write(chars, middle, length);
+    public void testClose_NoRemainingData() throws IOException {
+        writer.close();
         assertMessages();
-        writer.write('\n');
-        assertMessages(right);
         if (wrapped != null) {
-            assertEquals(FIRST.substring(middle, FIRST.length()) + '\n', wrapped.toString());
+            assertEquals("", wrapped.toString());
         }
     }
 
     @Test
+    public void testFlush() throws IOException {
+        final OutputStream out = EasyMock.createMock(OutputStream.class);
+        out.flush(); // expect the flush to come through to the mocked OutputStream
+        out.close();
+        replay(out);
+
+        final LoggerOutputStream los = new LoggerOutputStream(out, getLogger(), LEVEL);
+        los.flush();
+        los.close();
+        verify(out);
+    }
+
+    @Test
     public void testWrite_Character() throws Exception {
         for (final char c : FIRST.toCharArray()) {
             writer.write(c);
@@ -84,55 +90,49 @@ public abstract class AbstractLoggerWriterTest extends AbstractStreamTest {
     }
 
     @Test
-    public void testWrite_IgnoresWindowsNewline() throws IOException {
-        writer.write(FIRST + "\r\n");
-        writer.write(LAST);
-        writer.close();
-        assertMessages(FIRST, LAST);
+    public void testWrite_CharArray() throws Exception {
+        final char[] chars = FIRST.toCharArray();
+        writer.write(chars);
+        assertMessages();
+        writer.write('\n');
+        assertMessages(FIRST);
         if (wrapped != null) {
-            assertEquals(FIRST + "\r\n" + LAST, wrapped.toString());
+            assertEquals(FIRST + '\n', wrapped.toString());
         }
     }
 
     @Test
-    public void testWrite_MultipleLines() throws IOException {
-        writer.write(FIRST + '\n' + LAST + '\n');
-        assertMessages(FIRST, LAST);
+    public void testWrite_CharArray_Offset_Length() throws Exception {
+        final char[] chars = FIRST.toCharArray();
+        final int middle = chars.length / 2;
+        final int length = chars.length - middle;
+        final String right = new String(chars, middle, length);
+        writer.write(chars, middle, length);
+        assertMessages();
+        writer.write('\n');
+        assertMessages(right);
         if (wrapped != null) {
-            assertEquals(FIRST + '\n' + LAST + '\n', wrapped.toString());
+            assertEquals(FIRST.substring(middle, FIRST.length()) + '\n', wrapped.toString());
         }
     }
 
     @Test
-    public void testFlush() throws IOException {
-        final OutputStream out = EasyMock.createMock(OutputStream.class);
-        out.flush(); // expect the flush to come through to the mocked OutputStream
-        out.close();
-        replay(out);
-
-        final LoggerOutputStream los = new LoggerOutputStream(out, getLogger(), LEVEL);
-        los.flush();
-        los.close();
-        verify(out);
-    }
-
-    @Test
-    public void testClose_NoRemainingData() throws IOException {
+    public void testWrite_IgnoresWindowsNewline() throws IOException {
+        writer.write(FIRST + "\r\n");
+        writer.write(LAST);
         writer.close();
-        assertMessages();
+        assertMessages(FIRST, LAST);
         if (wrapped != null) {
-            assertEquals("", wrapped.toString());
+            assertEquals(FIRST + "\r\n" + LAST, wrapped.toString());
         }
     }
 
     @Test
-    public void testClose_HasRemainingData() throws IOException {
-        writer.write(FIRST);
-        assertMessages();
-        writer.close();
-        assertMessages(FIRST);
+    public void testWrite_MultipleLines() throws IOException {
+        writer.write(FIRST + '\n' + LAST + '\n');
+        assertMessages(FIRST, LAST);
         if (wrapped != null) {
-            assertEquals(FIRST, wrapped.toString());
+            assertEquals(FIRST + '\n' + LAST + '\n', wrapped.toString());
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/30ef44b5/log4j-streams/src/test/java/org/apache/logging/log4j/streams/AbstractStreamTest.java
----------------------------------------------------------------------
diff --git a/log4j-streams/src/test/java/org/apache/logging/log4j/streams/AbstractStreamTest.java b/log4j-streams/src/test/java/org/apache/logging/log4j/streams/AbstractStreamTest.java
index 6422309..17d5c72 100644
--- a/log4j-streams/src/test/java/org/apache/logging/log4j/streams/AbstractStreamTest.java
+++ b/log4j-streams/src/test/java/org/apache/logging/log4j/streams/AbstractStreamTest.java
@@ -31,23 +31,18 @@ import org.junit.Before;
 import org.junit.ClassRule;
 
 public abstract class AbstractStreamTest {
+    protected static Logger getLogger() {
+        return ctx.getLogger("UnitTestLogger");
+    }
     protected final static String NEWLINE = System.getProperty("line.separator");
     protected final static Level LEVEL = Level.ERROR;
     protected final static String FIRST = "first";
+
     protected final static String LAST = "last";
 
     @ClassRule
     public static InitialLoggerContext ctx = new InitialLoggerContext("log4j2-streams-unit-test.xml");
 
-    protected static Logger getLogger() {
-        return ctx.getLogger("UnitTestLogger");
-    }
-
-    @Before
-    public void clearAppender() {
-        ((ListAppender) ctx.getAppender("UnitTest")).clear();
-    }
-
     protected void assertMessages(final String... messages) {
         final List<String> actualMsgs = ((ListAppender) ctx.getAppender("UnitTest")).getMessages();
         assertEquals("Unexpected number of results.", messages.length, actualMsgs.size());
@@ -56,4 +51,9 @@ public abstract class AbstractStreamTest {
             assertThat(actualMsgs.get(i), startsWith(start));
         }
     }
+
+    @Before
+    public void clearAppender() {
+        ((ListAppender) ctx.getAppender("UnitTest")).clear();
+    }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/30ef44b5/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerBufferedInputStreamCallerInfoTest.java
----------------------------------------------------------------------
diff --git a/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerBufferedInputStreamCallerInfoTest.java b/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerBufferedInputStreamCallerInfoTest.java
index b8206c8..07df463 100644
--- a/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerBufferedInputStreamCallerInfoTest.java
+++ b/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerBufferedInputStreamCallerInfoTest.java
@@ -26,10 +26,12 @@ public class LoggerBufferedInputStreamCallerInfoTest extends LoggerStreamsCaller
 
     private LoggerBufferedInputStream logIn;
     
-    @Before
-    public void setupStreams() {
-        final InputStream srcInputStream = new ByteArrayInputStream("a\nb\nc\nd".getBytes());
-        logIn = new LoggerBufferedInputStream(srcInputStream, getLogger(), LEVEL);
+    @Test
+    public void close() throws Exception {
+        logIn.read();
+        assertMessages("before close", 3, "close");
+        logIn.close();
+        assertMessages("after close", 4, "close");
     }
     
     @Test
@@ -56,11 +58,9 @@ public class LoggerBufferedInputStreamCallerInfoTest extends LoggerStreamsCaller
         logIn.close();
     }
 
-    @Test
-    public void close() throws Exception {
-        logIn.read();
-        assertMessages("before close", 3, "close");
-        logIn.close();
-        assertMessages("after close", 4, "close");
+    @Before
+    public void setupStreams() {
+        final InputStream srcInputStream = new ByteArrayInputStream("a\nb\nc\nd".getBytes());
+        logIn = new LoggerBufferedInputStream(srcInputStream, getLogger(), LEVEL);
     }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/30ef44b5/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerBufferedReaderCallerInfoTest.java
----------------------------------------------------------------------
diff --git a/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerBufferedReaderCallerInfoTest.java b/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerBufferedReaderCallerInfoTest.java
index 3d3b927..44850dd 100644
--- a/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerBufferedReaderCallerInfoTest.java
+++ b/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerBufferedReaderCallerInfoTest.java
@@ -28,10 +28,12 @@ public class LoggerBufferedReaderCallerInfoTest extends LoggerStreamsCallerInfoT
 
     LoggerBufferedReader logReader;
     
-    @Before
-    public void setupReader() {
-        final Reader srcReader = new StringReader("a\nb\nc\nd");
-        logReader = new LoggerBufferedReader(srcReader, getLogger(), Level.WARN);
+    @Test
+    public void close() throws Exception {
+        logReader.readLine();
+        assertMessages("before close", 3, "close");
+        logReader.close();
+        assertMessages("after close", 4, "close");
     }
 
     @Test
@@ -74,11 +76,9 @@ public class LoggerBufferedReaderCallerInfoTest extends LoggerStreamsCallerInfoT
         logReader.close();
     }
 
-    @Test
-    public void close() throws Exception {
-        logReader.readLine();
-        assertMessages("before close", 3, "close");
-        logReader.close();
-        assertMessages("after close", 4, "close");
+    @Before
+    public void setupReader() {
+        final Reader srcReader = new StringReader("a\nb\nc\nd");
+        logReader = new LoggerBufferedReader(srcReader, getLogger(), Level.WARN);
     }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/30ef44b5/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerInputStreamCallerInfoTest.java
----------------------------------------------------------------------
diff --git a/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerInputStreamCallerInfoTest.java b/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerInputStreamCallerInfoTest.java
index 5942217..1c68548 100644
--- a/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerInputStreamCallerInfoTest.java
+++ b/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerInputStreamCallerInfoTest.java
@@ -27,12 +27,6 @@ public class LoggerInputStreamCallerInfoTest extends LoggerStreamsCallerInfoTest
 
     private LoggerInputStream logIn;
     
-    @Before
-    public void setupStreams() {
-        final InputStream srcInputStream = new ByteArrayInputStream("a\nb\nc\nd".getBytes());
-        logIn = new LoggerInputStream(srcInputStream, getLogger(), Level.WARN);
-    }
-    
     @Test
     public void read() throws Exception {
         logIn.read();
@@ -51,4 +45,10 @@ public class LoggerInputStreamCallerInfoTest extends LoggerStreamsCallerInfoTest
         logIn.close();
         assertMessages("after close size", 4, "read");
     }
+    
+    @Before
+    public void setupStreams() {
+        final InputStream srcInputStream = new ByteArrayInputStream("a\nb\nc\nd".getBytes());
+        logIn = new LoggerInputStream(srcInputStream, getLogger(), Level.WARN);
+    }
 }