?
自定义一个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
?希望对大家有帮助。转载请注明出处
?
log4j日志显示到GUI组件——JTextArea(如果是其他GUI组件,需要略作修改)
原文:http://wuyibo126.iteye.com/blog/2240510