У моего приложения есть фабрика журналов с двумя провайдерами: один из них записывает в файл, а другой выполняет вызов 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
}
}
Это создает цикл, в котором я получаю ошибку И если поставщиксайт не работает, это происходит:
- Произошла ошибка и вызовы провайдера журнала Rest Rest предпринята попытка вызова.
- Сбой (предположим, поставщик не работает)
- Вызов ошибки вызывает другой вызов поставщику журнала отдыха
- Вернуться к шагу 3 .... и т. Д.
Есть ли способ переключения между провайдерами?Что-то, что говорит, если (restClient - VendorRestClient), игнорировать провайдера журнала Rest Api?Я пытаюсь убедиться, что любая ошибка провайдера не делает еще один вызов журнала этому провайдеру.