Merge pull request #4689 from eclipse/jetty-10.0.x-4620-stderr-console-capture

Issue #4620 - support alt PrintStream in StdErrAppender properly
This commit is contained in:
Joakim Erdfelt 2020-03-23 08:36:11 -05:00 committed by GitHub
commit dfc2568f46
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 13 additions and 6 deletions

View File

@ -57,11 +57,11 @@ public class StdErrAppender implements JettyAppender
/**
* The stream to write logging events to.
*/
private PrintStream stderr;
private PrintStream stream;
public StdErrAppender(JettyLoggerConfiguration config)
{
this(config, System.err);
this(config, null);
}
public StdErrAppender(JettyLoggerConfiguration config, PrintStream stream)
@ -72,7 +72,7 @@ public class StdErrAppender implements JettyAppender
public StdErrAppender(JettyLoggerConfiguration config, PrintStream stream, TimeZone timeZone)
{
Objects.requireNonNull(config, "JettyLoggerConfiguration");
this.stderr = Objects.requireNonNull(stream, "PrintStream");
this.stream = stream;
TimeZone tzone = timeZone;
if (tzone == null)
@ -96,7 +96,14 @@ public class StdErrAppender implements JettyAppender
{
StringBuilder builder = new StringBuilder(64);
format(builder, logger, level, timestamp, threadName, throwable, message, argumentArray);
stderr.println(builder);
if (stream != null)
{
stream.println(builder);
}
else
{
System.err.println(builder);
}
}
public boolean isCondensedNames()
@ -116,12 +123,12 @@ public class StdErrAppender implements JettyAppender
public PrintStream getStream()
{
return stderr;
return stream;
}
public void setStream(PrintStream stream)
{
this.stderr = stream;
this.stream = stream;
}
private void format(StringBuilder builder, JettyLogger logger, Level level, long timestamp, String threadName, Throwable throwable, String message, Object... argumentArray)