Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
特定异常类型的Log4Net appender筛选器?_Log4net - Fatal编程技术网

特定异常类型的Log4Net appender筛选器?

特定异常类型的Log4Net appender筛选器?,log4net,Log4net,我正在尝试根据记录的异常类型筛选appender。这在log4net中可能吗?log4net不直接支持这一点。但是,通过从IFilter接口或FilterSkeleton类(都在log4net.filter命名空间中)派生,您可以非常轻松地实现自己的过滤器 像这样的事情应该可以做到: public class ExceptionTypeFilter : FilterSkeleton { override public FilterDecision Decide(LoggingEvent

我正在尝试根据记录的异常类型筛选appender。这在log4net中可能吗?

log4net不直接支持这一点。但是,通过从
IFilter
接口或
FilterSkeleton
类(都在
log4net.filter
命名空间中)派生,您可以非常轻松地实现自己的过滤器

像这样的事情应该可以做到:

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

然后可以像常规过滤器一样使用此过滤器。为了进一步参考,您可以查看标准log4net过滤器的源代码。

此代码只记录您的特定异常类型。如果您想过滤掉一个特定的异常,您可以反转Accept&Deny。FilterDecision.Accept意味着记录它。拒绝意味着不记录它。可能是显而易见的,但我花了一分钟的时间仔细考虑。:)如果您有多个筛选器,则可能需要使用FilterDecision.Neutral。