2016-11-09 12 views
0

У меня есть консольное приложение, в котором я использую Serilog. Я пытаюсь ввести журнал в мою библиотеку служб, но я никогда не вижу сообщения журнала. Кажется, когда я просматриваю код, хотя я создаю Singleton LoggerFactory, библиотека создает новый экземпляр фабрики.Inject ILoggingFactory в библиотеку сервисов

Console Application

ILoggerFactory loggerFactory = new LoggerFactory(); 
loggerFactory.AddSerilog(GetLoggerConfiguration()); 
_loggerIdentity = loggerFactory.CreateLogger<WorkerBroker>(); 

IServiceCollection services = new ServiceCollection(); 
services.TryAddSingleton<ILoggerFactory, LoggerFactory>(); 
_provider = services.BuildServiceProvider(); 

// Inject my service 
var service = ActivatorUtilities.CreateInstance<MyService>(_provider); 

Конструктор для предоставления услуг, где инъекции происходит (в библиотеке)

public MyService(ILoggerFactory loggerFactory) 
{ 
    _logger = loggerFactory.CreateLogger<WebCreditService>(); 
} 

Позже в службе я попытаюсь что-то журнал и ничего не показывает в журнале, но я см. сообщения из приложения «Консоль».

ответ

0

Я смог сделать немного больше исследований, и мне просто нужно было добавить фабрику регистрации, которую я создал для ServicesCollection.

ILoggerFactory loggerFactory = new LoggerFactory(); 
loggerFactory.AddSerilog(GetLoggerConfiguration()); 
_loggerIdentity = loggerFactory.CreateLogger<WorkerBroker>(); 

IServiceCollection services = new ServiceCollection(); 
services.AddSingleton(loggerFactory); 
_provider = services.BuildServiceProvider(); 
0

Попробуйте это:

// Добавить консоль при входе serviceCollection.AddSingleton (новый LoggerFactory() .AddConsole (configuration.GetSection ("Вход")) .AddSerilog() .AddDebug ()); serviceCollection.AddLogging();

 // Add Serilog logging   
     Log.Logger = new LoggerConfiguration() 
      .WriteTo.RollingFile(configuration["Serilog:LogFile"]) 
      .ReadFrom.Configuration(configuration) 
      .CreateLogger(); 

Но вы также должны учитывать конфигурацию в файле appsettings.

См. Здесь: https://www.codeproject.com/Articles/1218350/Elasticsearch-Kibana-and-Docker-using-NET-Standard