2009-08-07 142 views
5

是否有可能创建一个过滤器,例如一个PropertyFilter(如果其中一个或另一个值匹配的话)是中性的(并传递给链中的下一个过滤器)?就像:Log4Net过滤器“OR”

<filter type="log4net.Filter.PropertyFilter"> 
    <Key value="myProperty" /> 
    <StringsToMatch Operator="OR"> 
     <Match>value1</Match> 
     <Match>value2</Match> 
    </StringsToMatch> 
</filter> 

我真的不想写我自己的过滤器,宁愿用普通的Log4Net过滤器来完成这个。这可能吗?

回答

4

你可以自己开发这样一个过滤器,通过继承FilterSkeleton

但是,不建议像这样的专门过滤器,我建议你应该实现一个更通用的过滤器,该过滤器可以配置为包含过滤器集合并将操作符应用于这些过滤器。配置可能看起来像这样:

<filter type="CompositeFilter"> 
    <operator value="Or" /> 
    <filters> 
    <filter type="log4net.Filter.PropertyFilter"> 
     <stringToMatch value="value1" /> 
    </filter> 
    <filter type="log4net.Filter.PropertyFilter"> 
     <stringToMatch value="value2" /> 
    </filter> 
    </filters> 
</filter> 

如果你做了这样的过滤器,我鼓励你把它提交给log4net项目。它肯定会对公众有用:)

+2

是的,我希望有人已经做到了这一点。我很惊讶这样一个成熟的日志记录引擎不会有这个能力已经在主干。 – 2009-08-17 21:50:20

+1

和五年后它仍然没有!猜猜没有人觉得提交它;-) – BatteryBackupUnit 2014-05-27 07:42:58

+0

@BatteryBackupUnit - 问题是:有没有人执行过它? :d – 2014-05-27 11:06:52