2012-07-05 12 views

Odpowiedz

9

log4net nie obsługuje tego bezpośrednio. Możesz jednak dość łatwo zaimplementować własny filtr, korzystając z interfejsu IFilter lub klasy FilterSkeleton (zarówno w przestrzeni nazw log4net.Filter).

Coś jak to powinno załatwić sprawę:

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

Filtr ten można następnie wykorzystać jak zwykły filtr. Aby uzyskać więcej informacji, możesz zapoznać się z kodem źródłowym standardowych filtrów log4net.

+0

Ten kod zapisuje tylko określony typ wyjątku. Jeśli chcesz odfiltrować określony wyjątek, możesz cofnąć Akceptuj i odrzuć. FilterDecision.Accept oznacza rejestrację. Odmów oznacza, że ​​tego nie rejestrujesz. Prawdopodobnie oczywiste, ale zabrało mi chwilę na przemyślenie. :) – scw

+0

A jeśli masz więcej niż jeden filtr, może być konieczne użycie FilterDecision.Neutral. – scw

Powiązane problemy