public class Logger : ILogger
{
private readonly ILoggerHandler LoggerH;
public Logger(ILoggerHandler _LoggerH)
{
LoggerH = _LoggerH;
}
public async Task exception(LogObj _log)
{
await LoggerH.Log(_log); // Called ILoggerHandler Method
}
}
public interface ILogger
{
Task exception(LogObj _log);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public interface ILoggerHandler
{
Task Log(LogObj log);
}
public class LoggerHandler: ILoggerHandler
{
private readonly IAPIHandler _apiHandler;
public LoggerHandler(IAPIHandler apiHandler)
{
_apiHandler = apiHandler;
}
public async Task Log(LogObj log)
{
try
{
var request = JsonConvert.SerializeObject(log);
await _apiHandler.Process(request, url, HttpMethode.POST, _headers); // Called IAPIHandler Method
}
catch (Exception ex)
{
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public interface IAPIHandler
{
Task<string> Process(string Request, string RequestURL, string httpMethode, Dictionary<string, string> Header = null);
}
public class APIHandler : IAPIHandler
{
private readonly DateTime requestTime;
private readonly ILogger _logger;
public APIHandler(ILogger logger)
{
_logger = logger;
this.requestTime = DateTime.Now;
}
public async Task<string> Process(string Request, string RequestURL, string httpMethode, Dictionary<string, string> Header = null)
{
string content = string.Empty;
try
{
// code for calling the service(Logger)
}
catch (WebException wex)
{
content = "Error";
var response = wex.Response as HttpWebResponse;
await _logger.exception(wex, Request, this.requestTime); // Called ILogger Method
}
catch (Exception ex)
{
content = "Error";
await _logger.exception(ex, Request, this.requestTime);
}
return content;
}
- ILogger состоит из метода исключение , которое регистрирует ошибкувсякий раз, когда возникает исключение в коде
- метод исключения в ILogger вызывает метод Log in ILoggerHandler , который вызывает службу журнала
- ILoggerHandler вызов IAPIHandler для вызова службы
- Чтобы зарегистрировать исключение в IAPIHandler снова ILogger метод исключения называется
, так что это приводит к круговой зависимости, поэтому нужна помощь в решении этого