public static void Init(IServiceCollection services) { services.AddSingleton <IBackgroundTaskQueue, BackgroundTaskQueue>(); services.AddHostedService <QueuedHostedService>(); var serviceResolver = services.BuildServiceProvider(); //resolve instance inject from DB layer inject class HostInformationDTO hostInformation = new HostInformationDTO( serviceResolver.GetService <IConfiguration>().GetSection("HostInformation").GetSection("Name").Value, serviceResolver.GetService <IConfiguration>().GetSection("HostInformation").GetSection("Server").Value ); LoggerSettingsDTO loggerSettings = new LoggerSettingsDTO( Convert.ToBoolean(serviceResolver.GetService <IConfiguration>().GetSection("Logging").GetSection("TurnOn").Value), serviceResolver.GetService <IConfiguration>().GetSection("Logging").GetSection("LogLevel").Value, Convert.ToInt32(serviceResolver.GetService <IConfiguration>().GetSection("Logging").GetSection("StorageType").Value) ); //route source code to inject other providers like XML storage log provider //serviceResolver.GetService<ILoggerFactory>().AddProvider(new DatabaseLoggerProvider(serviceResolver.GetService<IEventLogRepository>(), // hostInformation, // loggerSettings)); services.AddScoped <ILogProvider>(s => new LogProvider(serviceResolver.GetService <IEventLogRepository>(), serviceResolver.GetService <IXmlDataProvider <EventLog> >(), hostInformation, loggerSettings)); services.AddScoped <ICacheService>(s => new CacheService(serviceResolver.GetService <IMemoryCache>())); services.AddScoped <IUserService>(s => new UserService(serviceResolver.GetService <IUserRepository>(), services.BuildServiceProvider().GetService <ILogProvider>())); }
public LogProvider(IEventLogRepository eventLogRepository, IXmlDataProvider <EventLog> xmlEventLogRepository, HostInformationDTO hostInformation, LoggerSettingsDTO loggerSettings) { this._eventLogRepository = eventLogRepository; this._hostInformation = hostInformation; this._loggerSettings = loggerSettings; this._xmlEventLogRepository = xmlEventLogRepository; }
public LogProvider(IEventLogRepository eventLogRepository, IXmlDataProvider <EventLog> xmlEventLogRepository, HostInformationDTO hostInformation, LoggerSettingsDTO loggerSettings, IBackgroundTaskQueue queue) { this._eventLogRepository = eventLogRepository; this._hostInformation = hostInformation; this._loggerSettings = loggerSettings; this._xmlEventLogRepository = xmlEventLogRepository; this._queue = queue; }