自定义一个appender实现AppenderSkeleton这个抽象类即可。
废话不多说,直接上代码:(代码是自己写项目时的真实代码)
public class JTextAreaAppender extends AppenderSkeleton {
/**
* 需要日志显示到的位置(这里是JTextArea对象)
*/
private JTextArea textArea = CqFrame.logArea;
/**
* 最多显示条数
*/
protected int maxEntries = 100;
/**
* 已经在JTextArea上显示的条数
*/
private int entries = 0;
@Override
public void close() {
textArea.setText("");
entries = 0;
}
@Override
public boolean requiresLayout() {
return true;
}
@Override
protected void append(LoggingEvent event) {
String text = this.layout.format(event);
Document doc = null;
try {
doc = textArea.getDocument();
if (entries >= maxEntries) {
int endOfs = textArea.getLineEndOffset(entries - maxEntries);
doc.remove(0, endOfs);
entries = entries - 1;
}
entries = entries + 1;
textArea.append(text);
textArea.setCaretPosition(doc.getLength());
} catch (BadLocationException e) {
e.printStackTrace();
}
}
}
log4j的配置文件中需要添加的:
log4j.rootLogger=debug, stdout, gui
......
#GUI 日志显示到页面上
log4j.appender.gui=com.usky.lvkecq.ui.JTextAreaAppender
log4j.appender.gui.layout=org.apache.log4j.PatternLayout
log4j.appender.gui.layout.ConversionPattern=%5p [%t] - %m%n
log4j.appender.gui.Threshold=INFO
希望对大家有帮助。转载请注明出处