2015-12-07 84 views
2

考慮延長FilterSkeleton與屬性名稱MYNAME和擴展ApenderSkeleton訪問來自附加器

一個appender類過濾屬性有可能得到它接受了過濾器的MYNAME財產這條消息在appender的Append方法中?

protected override void Append(LoggingEvent loggingEvent) 
{ 
    //sudo 
    var somename = acceptedfilter.MyName; 

} 

回答

0

可以重寫FilterEvent方法保存接受消息的過濾器,然後在Append檢索:

public class FilteredAppender : AppenderSkeleton 
{ 
    private IFilter filter; 

    protected override bool FilterEvent(LoggingEvent loggingEvent) 
    { 
     IFilter f = this.FilterHead; 

     while (f != null) 
     { 
      if (f.Decide(loggingEvent) == FilterDecision.Accept) 
      { 
       filter = f; // Set the filter field 
       break; 
      } 

      f = f.Next; 
     } 

     return base.FilterEvent(loggingEvent); 
    } 

    protected override void Append(LoggingEvent loggingEvent) 
    { 
     NamedFilter acceptedfilter = filter as NamedFilter;    

     if (acceptedfilter!= null) 
     { 
       var somename = acceptedfilter.MyName; 
       // etc 
     } 
    } 
} 
+0

工作就像一個魅力謝謝。 (當我第一次看到該方法時,不確定我是「吸菸」)) – cechode