2012-07-05 20 views

Respuesta

9

log4net no es compatible con esto directamente. Sin embargo, puede implementar fácilmente su propio filtro derivando de la interfaz IFilter o de la clase FilterSkeleton (ambas en el espacio de nombres log4net.Filter).

Algo como esto debe hacer el truco:

public class ExceptionTypeFilter : FilterSkeleton 
{ 
    override public FilterDecision Decide(LoggingEvent loggingEvent) 
    { 
      var ex = loggingEvent.ExceptionObject as YourExceptionType; 
      return (ex != null) ? FilterDecision.Accept : FilterDecision.Deny;   
    } 
} 

Este filtro se puede entonces utilizar como un filtro normal. Para mayor referencia, puede consultar el código fuente de los filtros log4net estándar.

+0

Este código solo registraría su tipo de excepción específica. Si desea filtrar una excepción específica, puede invertir el Aceptar y denegar. FilterDecision.Accept significa registrarlo. Denegar significa no iniciar sesión. Probablemente es obvio, pero me tomó un minuto pensarlo detenidamente. :) – scw

+0

Y si tiene más de un filtro, es posible que necesite usar FilterDecision.Neutral. – scw

Cuestiones relacionadas