次のようなカスタム アペンダー クラスを作成する必要があります。
public class MyConsoleAppender extends AppenderBase<ILoggingEvent> {
private Encoder<ILoggingEvent> encoder = new EchoEncoder<ILoggingEvent>();
private ByteArrayOutputStream out = new ByteArrayOutputStream();
public MyConsoleAppender() {
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
setContext(lc);
start();
lc.getLogger("ROOT").addAppender(this);
}
@Override
public void start() {
try {
encoder.init(out);
} catch (IOException e) {}
super.start();
}
@Override
public void append(ILoggingEvent event) {
try {
encoder.doEncode(event);
out.flush();
String line = out.toString(); // TODO: append _line_ to your JTextPane
out.reset();
} catch (IOException e) {}
}
}
EchoEncoder を PatternLayoutEncoder に置き換えることができます (logback の例のフォルダーにある CountingConsoleAppender の例を参照してください)。
エンコーダーは各イベントをバイト バッファーに書き込みます。次に、文字列を抽出して、これを JTextPane や JTextArea など、必要なものに書き込みます。