@Shavadrius

Как логировать ошибку только единожды?

Добрый день!
Подскажите пожалуйста, можно ли исключить из логирования ошибки, возникающие в определенных классах, если я их обрабатываю и логирую вручную?
Есть у меня класс для обработки ошибок, который возвращает пользовательскую ошибку Error, пряча стек, реальную ошибку и прочее.
public class ServiceErrorHandler(ILogger<Error> logger) : IServiceErrorHandler
{
    private readonly ILogger _logger = logger;
    public Error HandleError(Exception exception)
    {
        _logger.LogError(exception: exception, "API error");
        //тут обрабатываем ошибку exception и создаем объект Error
        return Error("сообщение для пользователя");
    }
}


Есть у меня сервис, в котором я использую ручной обработчик (ResultApi - класс-обертка для ответов от сервиса):
public class MyService(IServiceErrorHandler serviceErrorHandler) {
  private readonly IServiceErrorHandler _serviceErrorHandler = serviceErrorHandler;
  public async Task<ResultApi> DoMaginc() {
    try {
       //magic
       return ResultApi.Success();
    }
    catch (Exception ex) {
      return Result.Failure(_serviceErrorHandler.HandleError(ex));
    }
  }
}


Проблема в том, что Logger выплевывает ошибку когда она случается + я сам пишу эту же ошибку в лог.
  • Вопрос задан
  • 86 просмотров
Пригласить эксперта
Ответы на вопрос 1
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
смотрите внимательно:
public class ServiceErrorHandler(ILogger logger) : IServiceErrorHandler
.. и вы его реализуете.. а потом
public class MyService(IServiceErrorHandler serviceErrorHandler)
.. что неожиданного?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы