如果您不想使用额外的日志库(如果程序很小,或者您必须节省空间(例如在小程序中)...),您可以随时使用 JSE 中的日志记录:java.util .记录。如果是这样,您可以使用 Handler 写入文本组件:
final class TextComponentHandler extends Handler {
@Nonnull private final JTextArea text;
TextComponentHandler(@Nonnull JTextArea text) {
this.text = text;
}
@Override
public void publish(LogRecord record) {
if (isLoggable(record))
synchronized(text) {
text.append(getFormatter().format(record));
}
}
@Override
public void flush() {/**/}
@Override
public void close() throws SecurityException {/**/}
}
并添加:
JTextArea textArea = new JTextArea() {
@Override
public void addNotify() {
super.addNotify();
for(Handler hh : logger.getHandlers())
if (hh == h)
return;
logger.addHandler(h);
}
@Override
public void removeNotify() {
super.removeNotify();
logger.removeHandler(h);
}
};
Logger logger = Logger.getLogger("my.logger");
Handler h = new TextComponentHandler(textArea);
logger.addHandler(h);