我需要破解一个小工具。它应该读取几个文件并转换它们。现在可以在我的 IDE 中使用了。对于用户,我想添加一个简单显示日志输出的小 UI。
您知道用于 logback 的现成可用的 Swing appender 吗?或者将 System.out 重定向到一个只有一个文本字段和一个“关闭”按钮的小 UI?
PS:我不是在寻找 Chainsaw、Jigsaw 或 Lilith。我希望在应用程序中显示日志消息。
最佳答案
你需要像这样写一个自定义的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) {}
}
}
您可以将 EchoEncoder 替换为 PatternLayoutEncoder(请参阅 logback 示例文件夹中的 CountingConsoleAppender 示例)。
编码器会将每个事件写入一个字节缓冲区,然后您可以从中提取一个字符串并将其写入您的 JTextPane 或 JTextArea,或您想要的任何内容。
关于java - 小工具中的Logback+Swing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3343612/