Logback: the reliable, generic, fast and flexible logging framework.
Copyright (C) 1999-2015, QOS.ch. All rights reserved.
This program and the accompanying materials are dual-licensed under
either the terms of the Eclipse Public License v1.0 as published by
the Eclipse Foundation
or (per the licensee's choosing)
under the terms of the GNU Lesser General Public License version 2.1
as published by the Free Software Foundation.
/**
* Logback: the reliable, generic, fast and flexible logging framework.
* Copyright (C) 1999-2015, QOS.ch. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 2.1
* as published by the Free Software Foundation.
*/
package ch.qos.logback.core;
import java.io.OutputStream;
import java.util.Arrays;
import ch.qos.logback.core.joran.spi.ConsoleTarget;
import ch.qos.logback.core.status.Status;
import ch.qos.logback.core.status.WarnStatus;
import ch.qos.logback.core.util.EnvUtil;
import ch.qos.logback.core.util.OptionHelper;
ConsoleAppender appends log events to System.out
or
System.err
using a layout specified by the user. The default
target is System.out
.
For more information about this appender, please refer to the online manual
at http://logback.qos.ch/manual/appenders.html#ConsoleAppender
Author: Ceki Gülcü, Tom SH Liu, Ruediger Dohna
/**
* ConsoleAppender appends log events to <code>System.out</code> or
* <code>System.err</code> using a layout specified by the user. The default
* target is <code>System.out</code>.
* <p/>
* For more information about this appender, please refer to the online manual
* at http://logback.qos.ch/manual/appenders.html#ConsoleAppender
*
* @author Ceki Gülcü
* @author Tom SH Liu
* @author Ruediger Dohna
*/
public class ConsoleAppender<E> extends OutputStreamAppender<E> {
protected ConsoleTarget target = ConsoleTarget.SystemOut;
protected boolean withJansi = false;
private final static String WindowsAnsiOutputStream_CLASS_NAME = "org.fusesource.jansi.WindowsAnsiOutputStream";
Sets the value of the Target option. Recognized values are
"System.out" and "System.err". Any other value will be ignored.
/**
* Sets the value of the <b>Target</b> option. Recognized values are
* "System.out" and "System.err". Any other value will be ignored.
*/
public void setTarget(String value) {
ConsoleTarget t = ConsoleTarget.findByName(value.trim());
if (t == null) {
targetWarn(value);
} else {
target = t;
}
}
Returns the current value of the target property. The default value
of the option is "System.out".
See also setTarget
. /**
* Returns the current value of the <b>target</b> property. The default value
* of the option is "System.out".
* <p/>
* See also {@link #setTarget}.
*/
public String getTarget() {
return target.getName();
}
private void targetWarn(String val) {
Status status = new WarnStatus("[" + val + "] should be one of " + Arrays.toString(ConsoleTarget.values()), this);
status.add(new WarnStatus("Using previously set target, System.out by default.", this));
addStatus(status);
}
@Override
public void start() {
OutputStream targetStream = target.getStream();
// enable jansi only on Windows and only if withJansi set to true
if (EnvUtil.isWindows() && withJansi) {
targetStream = getTargetStreamForWindows(targetStream);
}
setOutputStream(targetStream);
super.start();
}
private OutputStream getTargetStreamForWindows(OutputStream targetStream) {
try {
addInfo("Enabling JANSI WindowsAnsiOutputStream for the console.");
Object windowsAnsiOutputStream = OptionHelper.instantiateByClassNameAndParameter(WindowsAnsiOutputStream_CLASS_NAME, Object.class, context,
OutputStream.class, targetStream);
return (OutputStream) windowsAnsiOutputStream;
} catch (Exception e) {
addWarn("Failed to create WindowsAnsiOutputStream. Falling back on the default stream.", e);
}
return targetStream;
}
Returns:
/**
* @return
*/
public boolean isWithJansi() {
return withJansi;
}
If true, this appender will output to a stream which
Params: - withJansi –
Since: 1.0.5
/**
* If true, this appender will output to a stream which
*
* @param withJansi
* @since 1.0.5
*/
public void setWithJansi(boolean withJansi) {
this.withJansi = withJansi;
}
}