You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ma...@apache.org on 2014/09/03 07:23:57 UTC

[5/6] git commit: Fold down util package.

Fold down util package.


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

Branch: refs/heads/master
Commit: e8d75eeece5ae2f490a13c05ded532a99d17d62d
Parents: ffc1a38
Author: Matt Sicker <ma...@apache.org>
Authored: Wed Sep 3 00:21:54 2014 -0500
Committer: Matt Sicker <ma...@apache.org>
Committed: Wed Sep 3 00:21:54 2014 -0500

----------------------------------------------------------------------
 .../logging/log4j/io/ByteStreamLogger.java      | 152 +++++++++++++++++++
 .../logging/log4j/io/CharStreamLogger.java      | 110 ++++++++++++++
 .../log4j/io/LoggerFilterOutputStream.java      |   1 -
 .../logging/log4j/io/LoggerFilterWriter.java    |   1 -
 .../logging/log4j/io/LoggerInputStream.java     |   1 -
 .../logging/log4j/io/LoggerOutputStream.java    |   1 -
 .../apache/logging/log4j/io/LoggerReader.java   |   1 -
 .../apache/logging/log4j/io/LoggerWriter.java   |   1 -
 .../logging/log4j/io/util/ByteStreamLogger.java | 152 -------------------
 .../logging/log4j/io/util/CharStreamLogger.java | 110 --------------
 10 files changed, 262 insertions(+), 268 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e8d75eee/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/ByteStreamLogger.java
----------------------------------------------------------------------
diff --git a/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/ByteStreamLogger.java b/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/ByteStreamLogger.java
new file mode 100644
index 0000000..42c4c63
--- /dev/null
+++ b/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/ByteStreamLogger.java
@@ -0,0 +1,152 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.logging.log4j.io;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.nio.ByteBuffer;
+import java.nio.charset.Charset;
+
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.Marker;
+import org.apache.logging.log4j.spi.ExtendedLogger;
+
+public class ByteStreamLogger {
+    private class ByteBufferInputStream extends InputStream {
+
+        @Override
+        public int read() throws IOException {
+            ByteStreamLogger.this.buf.flip();
+            int result = -1;
+            if (ByteStreamLogger.this.buf.limit() > 0) {
+                result = ByteStreamLogger.this.buf.get() & 0xFF;
+            }
+            ByteStreamLogger.this.buf.compact();
+            return result;
+        }
+
+        @Override
+        public int read(final byte[] bytes, final int off, final int len) throws IOException {
+            ByteStreamLogger.this.buf.flip();
+            int result = -1;
+            if (ByteStreamLogger.this.buf.limit() > 0) {
+                result = Math.min(len, ByteStreamLogger.this.buf.limit());
+                ByteStreamLogger.this.buf.get(bytes, off, result);
+            }
+            ByteStreamLogger.this.buf.compact();
+            return result;
+        }
+    }
+
+    private static final int BUFFER_SIZE = 1024;
+    private final ExtendedLogger logger;
+    private final Level level;
+    private final Marker marker;
+    private final ByteBufferInputStream inputStream;
+    private final InputStreamReader reader;
+    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) {
+        this.logger = logger;
+        this.level = level;
+        this.marker = marker;
+        this.inputStream = new ByteBufferInputStream();
+        this.reader = new InputStreamReader(this.inputStream, charset);
+    }
+
+    public void close(final String fqcn) {
+        synchronized (this.msg) {
+            this.closed = true;
+            logEnd(fqcn);
+//            in.close();
+        }
+    }
+
+    private void extractMessages(final String fqcn) throws IOException {
+        if (this.closed) {
+            return;
+        }
+        int read = this.reader.read(this.msgBuf);
+        while (read > 0) {
+            int off = 0;
+            for (int pos = 0; pos < read; pos++) {
+                switch (this.msgBuf[pos]) {
+                case '\r':
+                    this.msg.append(this.msgBuf, off, pos - off);
+                    off = pos + 1;
+                    break;
+                case '\n':
+                    this.msg.append(this.msgBuf, off, pos - off);
+                    off = pos + 1;
+                    log(fqcn);
+                    break;
+                }
+            }
+            this.msg.append(this.msgBuf, off, read - off);
+            read = this.reader.read(this.msgBuf);
+        }
+    }
+
+    private void log(final String fqcn) {
+        // convert to string now so async loggers work
+        this.logger.logIfEnabled(fqcn, this.level, this.marker, this.msg.toString());
+        this.msg.setLength(0);
+    }
+    
+    private void logEnd(final String fqcn) {
+        if (this.msg.length() > 0) {
+            log(fqcn);
+        }
+    }
+
+    public void put(final String fqcn, final byte[] b, final int off, final int len) throws IOException {
+        int curOff = off;
+        int curLen = len;
+        if (curLen >= 0) {
+            synchronized (this.msg) {
+                while (curLen > this.buf.remaining()) {
+                    final int remaining = this.buf.remaining();
+                    this.buf.put(b, curOff, remaining);
+                    curLen -= remaining;
+                    curOff += remaining;
+                    extractMessages(fqcn);
+                }
+                this.buf.put(b, curOff, curLen);
+                extractMessages(fqcn);
+            }
+        } else {
+            logEnd(fqcn);
+        }
+    }
+
+    public void put(final String fqcn, final int b) throws IOException {
+        if (b >= 0) {
+            synchronized (this.msg) {
+                this.buf.put((byte) (b & 0xFF));
+                extractMessages(fqcn);
+            }
+        } else {
+            logEnd(fqcn);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e8d75eee/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/CharStreamLogger.java
----------------------------------------------------------------------
diff --git a/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/CharStreamLogger.java b/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/CharStreamLogger.java
new file mode 100644
index 0000000..f3977d8
--- /dev/null
+++ b/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/CharStreamLogger.java
@@ -0,0 +1,110 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.logging.log4j.io;
+
+import java.nio.CharBuffer;
+
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.Marker;
+import org.apache.logging.log4j.spi.ExtendedLogger;
+
+public class CharStreamLogger {
+    private final ExtendedLogger logger;
+    private final Level level;
+    private final Marker marker;
+    private final StringBuilder msg = new StringBuilder();
+    private boolean closed = false;
+
+    public CharStreamLogger(final ExtendedLogger logger, final Level level, final Marker marker) {
+        this.logger = logger;
+        this.level = level;
+        this.marker = marker;
+    }
+
+    public void close(final String fqcn) {
+        synchronized (this.msg) {
+            this.closed = true;
+            logEnd(fqcn);
+        }
+    }
+
+    private void log(final String fqcn) {
+        // convert to string now so async loggers work
+        this.logger.logIfEnabled(fqcn, this.level, this.marker, this.msg.toString());
+        this.msg.setLength(0);
+    }
+
+    private void logEnd(final String fqcn) {
+        if (this.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);
+    }
+
+    public void put(final String fqcn, final CharSequence str, final int off, final int len) {
+        if (len >= 0) {
+            synchronized (this.msg) {
+                if (this.closed) {
+                    return;
+                }
+                int start = off;
+                final int end = off + len;
+                for (int pos = off; pos < end; pos++) {
+                    final char c = str.charAt(pos);
+                    switch (c) {
+                    case '\r':
+                    case '\n':
+                        this.msg.append(str, start, pos);
+                        start = pos + 1;
+                        if (c == '\n') {
+                            log(fqcn);
+                        }
+                        break;
+                    }
+                }
+                this.msg.append(str, start, end);
+            }
+        } else {
+            logEnd(fqcn);
+        }
+    }
+
+    public void put(final String fqcn, final int c) {
+        if (c >= 0) {
+            synchronized (this.msg) {
+                if (this.closed) {
+                    return;
+                }
+                switch (c) {
+                case '\n':
+                    log(fqcn);
+                    break;
+                case '\r':
+                    break;
+                default:
+                    this.msg.append((char) c);
+                }
+            }
+        } else {
+            logEnd(fqcn);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e8d75eee/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/LoggerFilterOutputStream.java
----------------------------------------------------------------------
diff --git a/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/LoggerFilterOutputStream.java b/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/LoggerFilterOutputStream.java
index b9e6d78..d17544c 100644
--- a/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/LoggerFilterOutputStream.java
+++ b/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/LoggerFilterOutputStream.java
@@ -25,7 +25,6 @@ import java.nio.charset.Charset;
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.Marker;
 import org.apache.logging.log4j.spi.ExtendedLogger;
-import org.apache.logging.log4j.io.util.ByteStreamLogger;
 
 /**
  * Logs each line written to a pre-defined level. Can also be configured with a Marker. This class provides an interface

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e8d75eee/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/LoggerFilterWriter.java
----------------------------------------------------------------------
diff --git a/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/LoggerFilterWriter.java b/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/LoggerFilterWriter.java
index a700f92..5a9d8e0 100644
--- a/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/LoggerFilterWriter.java
+++ b/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/LoggerFilterWriter.java
@@ -24,7 +24,6 @@ import java.io.Writer;
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.Marker;
 import org.apache.logging.log4j.spi.ExtendedLogger;
-import org.apache.logging.log4j.io.util.CharStreamLogger;
 
 /**
  * Logs each line written to a pre-defined level. Can also be configured with a Marker. This class provides an interface

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e8d75eee/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/LoggerInputStream.java
----------------------------------------------------------------------
diff --git a/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/LoggerInputStream.java b/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/LoggerInputStream.java
index 873723f..445e366 100644
--- a/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/LoggerInputStream.java
+++ b/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/LoggerInputStream.java
@@ -25,7 +25,6 @@ import java.nio.charset.Charset;
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.Marker;
 import org.apache.logging.log4j.spi.ExtendedLogger;
-import org.apache.logging.log4j.io.util.ByteStreamLogger;
 
 /**
  * Logs each line read to a pre-defined level. Can also be configured with a Marker.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e8d75eee/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/LoggerOutputStream.java
----------------------------------------------------------------------
diff --git a/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/LoggerOutputStream.java b/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/LoggerOutputStream.java
index f0ab698..0d1829b 100644
--- a/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/LoggerOutputStream.java
+++ b/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/LoggerOutputStream.java
@@ -24,7 +24,6 @@ import java.nio.charset.Charset;
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.Marker;
 import org.apache.logging.log4j.spi.ExtendedLogger;
-import org.apache.logging.log4j.io.util.ByteStreamLogger;
 
 /**
  * Logs each line written to a pre-defined level. Can also be configured with a Marker. This class provides an interface

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e8d75eee/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/LoggerReader.java
----------------------------------------------------------------------
diff --git a/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/LoggerReader.java b/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/LoggerReader.java
index 658a988..48427f8 100644
--- a/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/LoggerReader.java
+++ b/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/LoggerReader.java
@@ -25,7 +25,6 @@ import java.nio.CharBuffer;
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.Marker;
 import org.apache.logging.log4j.spi.ExtendedLogger;
-import org.apache.logging.log4j.io.util.CharStreamLogger;
 
 /**
  * Logs each line written to a pre-defined level. Can also be configured with a Marker. This class provides an interface

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e8d75eee/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/LoggerWriter.java
----------------------------------------------------------------------
diff --git a/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/LoggerWriter.java b/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/LoggerWriter.java
index 70118e8..70310ad 100644
--- a/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/LoggerWriter.java
+++ b/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/LoggerWriter.java
@@ -23,7 +23,6 @@ import java.io.Writer;
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.Marker;
 import org.apache.logging.log4j.spi.ExtendedLogger;
-import org.apache.logging.log4j.io.util.CharStreamLogger;
 
 /**
  * Logs each line written to a pre-defined level. Can also be configured with a Marker. This class provides an interface

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e8d75eee/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/util/ByteStreamLogger.java
----------------------------------------------------------------------
diff --git a/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/util/ByteStreamLogger.java b/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/util/ByteStreamLogger.java
deleted file mode 100644
index bbba82e..0000000
--- a/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/util/ByteStreamLogger.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.logging.log4j.io.util;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.nio.ByteBuffer;
-import java.nio.charset.Charset;
-
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.Marker;
-import org.apache.logging.log4j.spi.ExtendedLogger;
-
-public class ByteStreamLogger {
-    private class ByteBufferInputStream extends InputStream {
-
-        @Override
-        public int read() throws IOException {
-            ByteStreamLogger.this.buf.flip();
-            int result = -1;
-            if (ByteStreamLogger.this.buf.limit() > 0) {
-                result = ByteStreamLogger.this.buf.get() & 0xFF;
-            }
-            ByteStreamLogger.this.buf.compact();
-            return result;
-        }
-
-        @Override
-        public int read(final byte[] bytes, final int off, final int len) throws IOException {
-            ByteStreamLogger.this.buf.flip();
-            int result = -1;
-            if (ByteStreamLogger.this.buf.limit() > 0) {
-                result = Math.min(len, ByteStreamLogger.this.buf.limit());
-                ByteStreamLogger.this.buf.get(bytes, off, result);
-            }
-            ByteStreamLogger.this.buf.compact();
-            return result;
-        }
-    }
-
-    private static final int BUFFER_SIZE = 1024;
-    private final ExtendedLogger logger;
-    private final Level level;
-    private final Marker marker;
-    private final ByteBufferInputStream inputStream;
-    private final InputStreamReader reader;
-    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) {
-        this.logger = logger;
-        this.level = level;
-        this.marker = marker;
-        this.inputStream = new ByteBufferInputStream();
-        this.reader = new InputStreamReader(this.inputStream, charset);
-    }
-
-    public void close(final String fqcn) {
-        synchronized (this.msg) {
-            this.closed = true;
-            logEnd(fqcn);
-//            in.close();
-        }
-    }
-
-    private void extractMessages(final String fqcn) throws IOException {
-        if (this.closed) {
-            return;
-        }
-        int read = this.reader.read(this.msgBuf);
-        while (read > 0) {
-            int off = 0;
-            for (int pos = 0; pos < read; pos++) {
-                switch (this.msgBuf[pos]) {
-                case '\r':
-                    this.msg.append(this.msgBuf, off, pos - off);
-                    off = pos + 1;
-                    break;
-                case '\n':
-                    this.msg.append(this.msgBuf, off, pos - off);
-                    off = pos + 1;
-                    log(fqcn);
-                    break;
-                }
-            }
-            this.msg.append(this.msgBuf, off, read - off);
-            read = this.reader.read(this.msgBuf);
-        }
-    }
-
-    private void log(final String fqcn) {
-        // convert to string now so async loggers work
-        this.logger.logIfEnabled(fqcn, this.level, this.marker, this.msg.toString());
-        this.msg.setLength(0);
-    }
-    
-    private void logEnd(final String fqcn) {
-        if (this.msg.length() > 0) {
-            log(fqcn);
-        }
-    }
-
-    public void put(final String fqcn, final byte[] b, final int off, final int len) throws IOException {
-        int curOff = off;
-        int curLen = len;
-        if (curLen >= 0) {
-            synchronized (this.msg) {
-                while (curLen > this.buf.remaining()) {
-                    final int remaining = this.buf.remaining();
-                    this.buf.put(b, curOff, remaining);
-                    curLen -= remaining;
-                    curOff += remaining;
-                    extractMessages(fqcn);
-                }
-                this.buf.put(b, curOff, curLen);
-                extractMessages(fqcn);
-            }
-        } else {
-            logEnd(fqcn);
-        }
-    }
-
-    public void put(final String fqcn, final int b) throws IOException {
-        if (b >= 0) {
-            synchronized (this.msg) {
-                this.buf.put((byte) (b & 0xFF));
-                extractMessages(fqcn);
-            }
-        } else {
-            logEnd(fqcn);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e8d75eee/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/util/CharStreamLogger.java
----------------------------------------------------------------------
diff --git a/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/util/CharStreamLogger.java b/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/util/CharStreamLogger.java
deleted file mode 100644
index 6107796..0000000
--- a/log4j-iostreams/src/main/java/org/apache/logging/log4j/io/util/CharStreamLogger.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.logging.log4j.io.util;
-
-import java.nio.CharBuffer;
-
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.Marker;
-import org.apache.logging.log4j.spi.ExtendedLogger;
-
-public class CharStreamLogger {
-    private final ExtendedLogger logger;
-    private final Level level;
-    private final Marker marker;
-    private final StringBuilder msg = new StringBuilder();
-    private boolean closed = false;
-
-    public CharStreamLogger(final ExtendedLogger logger, final Level level, final Marker marker) {
-        this.logger = logger;
-        this.level = level;
-        this.marker = marker;
-    }
-
-    public void close(final String fqcn) {
-        synchronized (this.msg) {
-            this.closed = true;
-            logEnd(fqcn);
-        }
-    }
-
-    private void log(final String fqcn) {
-        // convert to string now so async loggers work
-        this.logger.logIfEnabled(fqcn, this.level, this.marker, this.msg.toString());
-        this.msg.setLength(0);
-    }
-
-    private void logEnd(final String fqcn) {
-        if (this.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);
-    }
-
-    public void put(final String fqcn, final CharSequence str, final int off, final int len) {
-        if (len >= 0) {
-            synchronized (this.msg) {
-                if (this.closed) {
-                    return;
-                }
-                int start = off;
-                final int end = off + len;
-                for (int pos = off; pos < end; pos++) {
-                    final char c = str.charAt(pos);
-                    switch (c) {
-                    case '\r':
-                    case '\n':
-                        this.msg.append(str, start, pos);
-                        start = pos + 1;
-                        if (c == '\n') {
-                            log(fqcn);
-                        }
-                        break;
-                    }
-                }
-                this.msg.append(str, start, end);
-            }
-        } else {
-            logEnd(fqcn);
-        }
-    }
-
-    public void put(final String fqcn, final int c) {
-        if (c >= 0) {
-            synchronized (this.msg) {
-                if (this.closed) {
-                    return;
-                }
-                switch (c) {
-                case '\n':
-                    log(fqcn);
-                    break;
-                case '\r':
-                    break;
-                default:
-                    this.msg.append((char) c);
-                }
-            }
-        } else {
-            logEnd(fqcn);
-        }
-    }
-}