C# 从追加器访问筛选器属性

C# 从追加器访问筛选器属性,c#,log4net,log4net-appender,log4net-filter,C#,Log4net,Log4net Appender,Log4net Filter,给定一个扩展FilterSkeleton的类,该类的属性名为MyName,附加器扩展ApenderSkeleton 在appender的Append方法中,是否可以获取接受此消息的筛选器的MyName属性 protected override void Append(LoggingEvent loggingEvent) { //sudo var somename = acceptedfilter.MyName; } 您可以覆盖FilterEvent方法以保存接受消息的筛选

给定一个扩展FilterSkeleton的类,该类的属性名为MyName,附加器扩展ApenderSkeleton

在appender的Append方法中,是否可以获取接受此消息的筛选器的MyName属性

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

}

您可以覆盖
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
        }
    }
}

工作很有魅力谢谢你。(不确定我第一次看到这种方法时“吸烟”的是什么:)