2009-08-07 11 views
5

Czy można utworzyć filtr, na przykład filtr właściwości, który jest neutralny (i przekazywany do następnego filtra w łańcuchu), jeśli pasuje jedna lub inna wartość? Coś jak:Filtry Log4Net "LUB"

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

ja naprawdę nie chce napisać własny filtr i woleliby, aby osiągnąć ten cel z normalnych filtrów log4net. czy to możliwe?

Odpowiedz

4

Z pewnością można opracować taki filtr samodzielnie, podklasy FilterSkeleton.

Ale zamiast tworzyć wyspecjalizowany filtr, proponuję raczej zaimplementować bardziej ogólny filtr, który może być skonfigurowany tak, aby zawierał zbiór filtrów i nakładał na nich Operatora. Konfiguracja może wyglądać mniej więcej tak:

<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> 

Jeśli stworzysz taki filtr, zachęcam do przesłania go do projektu log4net. Byłoby to z pewnością użyteczne dla szerokiej publiczności :)

+2

Tak, miałem nadzieję, że ktoś już to zrobił. Jestem zaskoczony, że taki dojrzały mechanizm rejestrowania nie miałby już takiej możliwości w bagażniku. –

+1

i pięć lat później nadal nie ma! Chyba nikt nie chciał tego robić ;-) – BatteryBackupUnit

+0

@BatteryBackupUnit - pytanie brzmi: czy ktoś kiedykolwiek to zaimplementował? :RE –