zoukankan      html  css  js  c++  java
  • 在log4j中使用自定义的Appender

    在做项目时需要把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了!
  • 相关阅读:
    对unsigned int和int进行移位操作的区别
    ctags支持的语言
    ubuntu使用问题与解决记录[持续更新]
    [转]python起步之卡尔曼滤波
    Android Studio的安装使用记录[持续更新]
    web.py实现jsonp
    关于python的import
    git常用命令[持续更新]
    flot图表的使用
    迁移web.py项目至git@osc的项目演示平台
  • 原文地址:https://www.cnblogs.com/wonderow/p/158554.html
Copyright © 2011-2022 走看看