Logback + Swing in small tool

Aar*_*lla 4 java user-interface logging swing logback

我需要破解一个小工具.它应该读取几个文件并转换它们.现在,它在我的IDE中工作.对于用户,我想添加一个简单显示日志输出的小UI.

你知道一个现成的Swing appender用于logback吗?或者将System.out重定向到一个只有文本字段和"关闭"按钮的小UI的东西?

PS:我不是在寻找Chainsaw或Jigsaw或Lilith.我想在应用程序中显示日志消息.

Aar*_*son 5

您需要编写一个自定义appender类,如下所示:

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) {}
  }
}
Run Code Online (Sandbox Code Playgroud)

您可以使用PatternLayoutEncoder替换EchoEncoder(请参阅logback示例文件夹中的CountingConsoleAppender示例).

编码器会将每个事件写入一个字节缓冲区,然后您可以提取一个字符串并将其写入您的JTextPane或JTextArea,或者您想要的任何内容.