log4j日志显示到GUI组件——JTextArea(如果是其他GUI组件,需要略作修改)-CSDN博客

自定义一个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.JTextAreaAppenderlog4j.appender.gui.layout=org.apache.log4j.PatternLayoutlog4j.appender.gui.layout.ConversionPattern=%5p   [%t]   -  %m%nlog4j.appender.gui.Threshold=INFO

 希望对大家有帮助。转载请注明出处


原网址: 访问
创建于: 2024-02-18 16:47:54
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论