Настройка списка поставщиков журналов только для одного класса - PullRequest
0 голосов
/ 20 сентября 2018

У моего приложения есть фабрика журналов с двумя провайдерами: один из них записывает в файл, а другой выполняет вызов REST для сохранения в хранилище поставщика.Я использую loggerFactory для создания регистратора почти для каждого класса класса, и это включает мою фабрику клиентов Rest, которую я использую для всех остальных вызовов.

//Creates Rest Clients
public class RestClientFactory
{
    public RestClient Create(string name)
    {  
    return new RestClient(this.customLoggerFactory.Create(name));
    }
}

//Custom Rest client
public class RestClient{
    private readonly ICustomLoggerFactory logger;

    public RestClient(ICustomLoggerFactory logger)
    {
        this.logger = logger;
    }

    public Response Execute(Request req)
    {
        try
        {
            logger.Debug("Start")
            // Web Client logic
        }
        catch(Exception ex)
        {
            // This is where the problem is. Assuming the Vendor Rest 
            // Client is failing, the code will loop into this section
            logger.Error("Something went wrong", ex);
        }
    }
}

public class CustomLoggerFactory:ICustomLoggerFactory {
    private ILoggerFactory msLogger; //MS framework logger factory

    public CustomLoggerFactory(ILoggerFactory msLogger){
        this.mslogger = mslogger;
    }    

    CustomLogger Create(string name){
        this.loggerFactory.CreateLogger(name);
    }
}


public class CustomLogger{
    public void Debug(string message){
        // Debug logging logic
    }
     public void Error(string message, Exception ex){
         // Error logging logic
     }
}

Это создает цикл, в котором я получаю ошибку И если поставщиксайт не работает, это происходит:

  1. Произошла ошибка и вызовы провайдера журнала Rest Rest предпринята попытка вызова.
  2. Сбой (предположим, поставщик не работает)
  3. Вызов ошибки вызывает другой вызов поставщику журнала отдыха
  4. Вернуться к шагу 3 .... и т. Д.

Есть ли способ переключения между провайдерами?Что-то, что говорит, если (restClient - VendorRestClient), игнорировать провайдера журнала Rest Api?Я пытаюсь убедиться, что любая ошибка провайдера не делает еще один вызов журнала этому провайдеру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...