在做项目时需要把log4j的输出转到GUI上的一个文本框,在同学的帮助下得知可以自己继承AppenderSkeleton类而实现自己对输出的任何控制。但上网搜索却无所得,所以把经验共享一下。
AppenderSkeleton有一个抽象方法:
protected abstract void append(LoggingEvent event)
继承该类并实现这个方法,LoggingEvent.Message中即是输出的字符串,来参考一下WriterAppender的实现:
protected void subAppend(LoggingEvent event{
  
this.qw.write(this.layout.format(event));

  
if (layout.ignoresThrowable()) {
    String[] s 
= event.getThrowableStrRep();

    
if (s != null{
      
int len = s.length;

      
for (int i = 0; i < len; i++{
        
this.qw.write(s[i]);
        
this.qw.write(Layout.LINE_SEP);
      }

    }

  }


  
if (this.immediateFlush) {
    
this.qw.flush();
  }

}

可以看到主要就是this.qw.write(this.layout.format(event));这一行。反正主要的信息都在event里,需要什么都可以从中去取。
写好自已的类后就可以在log4j.properties配置文件中把log4j.appender的值赋为该类名。然后log4j启动读入配置文件就会使用自定义的Appender了!
posted on 2005-05-18 23:51  小生杂谈  阅读(4020)  评论(0编辑  收藏  举报