/// <summary> /// 通知 /// </summary> /// <param name="context">异常通知上下文</param> public virtual async Task NotifyAsync(ExceptionNotificationContext context) { Check.NotNull(context, nameof(context)); using var scope = ServiceScopeFactory.CreateScope(); var exceptionSubscribers = scope.ServiceProvider.GetServices <IExceptionSubscriber>().OrderBy(x => x.Order); foreach (var exceptionSubscriber in exceptionSubscribers) { try { await exceptionSubscriber.HandleAsync(context); } catch (Exception e) { Logger.LogWarning($"{exceptionSubscriber.GetType().AssemblyQualifiedName} 异常订阅器抛出异常!"); Logger.LogException(e, LogLevel.Warning); } } }
/// <summary> /// 通知 /// </summary> /// <param name="context">异常通知上下文</param> public Task NotifyAsync(ExceptionNotificationContext context) => Task.CompletedTask;
/// <summary> /// 处理 /// </summary> /// <param name="context">异常通知上下文</param> public abstract Task HandleAsync(ExceptionNotificationContext context);