log4j 设置,使产生的log传送到java swing 控件中
时间: 2023-08-21 20:03:26 浏览: 60
要将产生的log传送到Java Swing控件中,可以使用log4j的Appender机制。以下是一个简单的示例,将log输出到JTextArea中:
1.创建一个自定义的Appender类,继承自org.apache.log4j.WriterAppender类,重写append方法,将log信息输出到JTextArea中。
```java
import javax.swing.JTextArea;
import org.apache.log4j.WriterAppender;
import org.apache.log4j.spi.LoggingEvent;
public class SwingAppender extends WriterAppender {
private JTextArea textArea;
public SwingAppender(JTextArea textArea) {
this.textArea = textArea;
setWriter(new SwingAppenderWriter(textArea));
}
@Override
public void append(LoggingEvent event) {
super.append(event);
textArea.append(event.getMessage().toString());
textArea.append(System.getProperty("line.separator"));
}
private class SwingAppenderWriter extends java.io.Writer {
private JTextArea textArea;
public SwingAppenderWriter(JTextArea textArea) {
this.textArea = textArea;
}
@Override
public void write(char[] cbuf, int off, int len) throws IOException {
textArea.append(new String(cbuf, off, len));
}
@Override
public void flush() throws IOException {
textArea.repaint();
}
@Override
public void close() throws IOException {
}
}
}
```
2.在应用程序中添加SwingAppender,将log信息输出到JTextArea中。
```java
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class LogToSwing {
private static Logger logger = Logger.getLogger(LogToSwing.class);
public static void main(String[] args) {
JFrame frame = new JFrame("Log To Swing Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextArea textArea = new JTextArea();
JScrollPane scrollPane = new JScrollPane(textArea);
frame.getContentPane().add(scrollPane);
SwingAppender appender = new SwingAppender(textArea);
logger.addAppender(appender);
PropertyConfigurator.configure("log4j.properties");
logger.info("Hello, World!");
frame.setSize(400, 300);
frame.setVisible(true);
}
}
```
3.在log4j.properties文件中配置SwingAppender。
```properties
log4j.rootLogger=INFO, swingAppender
log4j.appender.swingAppender=com.example.SwingAppender
log4j.appender.swingAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.swingAppender.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c{2} - %m%n
```
这样,当应用程序运行时,产生的log将输出到JTextArea中。