2009-08-07 11 views
5

Est-il possible de créer un filtre, par exemple un PropertyFilter neutre (et passé au filtre suivant de la chaîne) si l'une ou l'autre valeur correspond? Quelque chose comme:Filtres Log4Net "OU"

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

Je ne veux pas écrire mon propre filtre et préférerait accomplir cela avec les filtres de Log4net normaux. Est-ce possible?

Répondre

4

Vous pourriez certainement développer un tel filtre en sous-classes FilterSkeleton. Mais au lieu de créer un filtre spécialisé comme celui-ci, je vous suggère plutôt d'implémenter un filtre plus générique qui pourrait être configuré pour contenir une collection de filtres et y appliquer l'Opérateur. La configuration pourrait ressembler à ceci:

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

Si vous faites un tel filtre, je vous encourage à le soumettre au projet log4net. Ce serait certainement utile pour le grand public :)

+2

Oui, j'espérais que quelqu'un d'autre l'avait déjà fait. Je suis surpris qu'un tel moteur de journalisation mature n'ait pas cette capacité déjà dans le coffre. –

+1

et cinq ans plus tard, il n'a toujours pas! Devinez que personne n'a envie de le commettre ;-) – BatteryBackupUnit

+0

@BatteryBackupUnit - la question est: est-ce que quelqu'un l'a déjà implémenté? :RÉ –