2009-08-07 14 views
5

¿Es posible hacer un filtro, por ejemplo un PropertyFilter que sea neutral (y pase al siguiente filtro de la cadena) si coincide uno u otro valor? Algo así como:Filtros de Log4Net "O"

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

Realmente no quiero escribir mi propio filtro y preferiría lograr esto con los filtros Log4net normales. es posible?

Respuesta

4

Definitivamente usted podría desarrollar dicho filtro subclasificando FilterSkeleton.

Pero en lugar de hacer un filtro especializado como este, le sugiero que implemente un filtro más genérico que podría configurarse para contener una colección de filtros y aplicar el operador sobre esos. La configuración podría ser algo como esto:

<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 comete un filtro de este tipo os animo para enviarlo al proyecto log4net. Sin duda sería útil para el público en general :)

+2

Sí, esperaba que alguien más ya hubiera hecho esto. Estoy sorprendido de que un motor de registro tan maduro ya no tenga esta capacidad en el maletero. –

+1

y cinco años después todavía no lo hace! Supongo que nadie tuvo ganas de hacerlo ;-) – BatteryBackupUnit

+0

@BatteryBackupUnit - la pregunta es: ¿alguna vez alguien lo implementó? :RE –