如何在SWING的界面输入undertown的日志信息

我画了一个SWING界面,如何让undertown的日志在界面上输出呢。

评论区

hb963724769

2021-07-27 10:43

SWING界面启动undertow代码。这里的try,catch没用,就算undertow启动失败,也catch不到。错误日志输出在控制台了
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
undertowServer= UndertowServer.create(com.fukuwaraku.common.config.Config.class);
undertowServer.setPort(11086);

undertowServer.setHost("localhost");
undertowServer.setDevMode(false);
undertowServer.start();

JOptionPane.showMessageDialog(null, "启动成功");
} catch (Exception e1){
JOptionPane.showMessageDialog(null, "启动失败!!!!!!"+e1.getMessage(), "启动失败",JOptionPane.ERROR_MESSAGE);
}

}
});

杜福忠

2021-07-27 15:24

重写System.setErr(new PrintStream(System.err){public void println(Object x) 等系列方法,输出内容到想输出的地方即可

hb963724769

2021-07-30 14:22

@杜福忠 感谢已经搞定。 贴出代码
private static void redirectSystemStreams() {
OutputStream out = new OutputStream() {
@Override
public void write(int b) throws IOException {
updateTextArea(String.valueOf((char) b));
}

@Override
public void write(byte[] b, int off, int len) throws IOException {
updateTextArea(new String(b, off, len));
}

@Override
public void write(byte[] b) throws IOException {
write(b, 0, b.length);
}
};

System.setOut(new PrintStream(out, true));
System.setErr(new PrintStream(out, true));
}
// 本质上相当于多线程的更新JTextArea内容
private static void updateTextArea(final String text) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
if (textArea.getLineCount()>120){
textArea.setText("");
}
textArea.append(text);
}
});
}

热门反馈

扫码入社