2009-08-07 56 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