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 2015/04/20 05:32:44 UTC
logging-log4j2 git commit: [LOG4J2-965] System.out no longer works
after the Console appender and JANSI is initialized.
Repository: logging-log4j2
Updated Branches:
refs/heads/master 0663a96a0 -> c958fbaf2
[LOG4J2-965] System.out no longer works after the Console appender and
JANSI is initialized.
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/c958fbaf
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/c958fbaf
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/c958fbaf
Branch: refs/heads/master
Commit: c958fbaf2988a42fa6d09ffa22f9c974ce33f019
Parents: 0663a96
Author: Gary Gregory <ga...@gmail.com>
Authored: Sun Apr 19 20:32:41 2015 -0700
Committer: Gary Gregory <ga...@gmail.com>
Committed: Sun Apr 19 20:32:41 2015 -0700
----------------------------------------------------------------------
.../log4j/core/appender/ConsoleAppender.java | 40 +++++++++++++++++++-
src/changes/changes.xml | 3 ++
2 files changed, 42 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/c958fbaf/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java
index fc062d8..f98a61c 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java
@@ -197,7 +197,7 @@ public final class ConsoleAppender extends AbstractOutputStreamAppender<OutputSt
// We type the parameter as a wildcard to avoid a hard reference to Jansi.
final Class<?> clazz = Loader.loadClass(JANSI_CLASS);
final Constructor<?> constructor = clazz.getConstructor(OutputStream.class);
- return (OutputStream) constructor.newInstance(printStream);
+ return new CloseShieldOutputStream((OutputStream) constructor.newInstance(printStream));
} catch (final ClassNotFoundException cnfe) {
LOGGER.debug("Jansi is not installed, cannot find {}", JANSI_CLASS);
} catch (final NoSuchMethodException nsme) {
@@ -209,6 +209,44 @@ public final class ConsoleAppender extends AbstractOutputStreamAppender<OutputSt
}
/**
+ * A delegating OutputStream that does not close its delegate.
+ */
+ private static class CloseShieldOutputStream extends OutputStream {
+
+ private final OutputStream delegate;
+
+ public CloseShieldOutputStream(final OutputStream delegate) {
+ this.delegate = delegate;
+ }
+
+ @Override
+ public void close() {
+ // do not close delegate
+ }
+
+ @Override
+ public void flush() throws IOException {
+ delegate.flush();
+ }
+
+ @Override
+ public void write(final byte[] b) throws IOException {
+ delegate.write(b);
+ }
+
+ @Override
+ public void write(final byte[] b, final int off, final int len)
+ throws IOException {
+ delegate.write(b, off, len);
+ }
+
+ @Override
+ public void write(final int b) throws IOException {
+ delegate.write(b);
+ }
+ }
+
+ /**
* An implementation of OutputStream that redirects to the current System.err.
*/
private static class SystemErrStream extends OutputStream {
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/c958fbaf/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index aeda6e3..09c37c4 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -24,6 +24,9 @@
</properties>
<body>
<release version="2.3" date="2015-0?-??" description="GA Release 2.3">
+ <action issue="LOG4J2-965" dev="ggregory" type="fix" due-to="Khotyn Huang">
+ System.out no longer works after the Console appender and JANSI is initialized.
+ </action>
<action issue="LOG4J2-995" dev="rgoers" type="update">
Move UTF-8 constant from Charsets to Constants class. Remove Charsets class.
</action>