0

我有一个正在使用 Serilog 的控制台应用程序。我正在尝试将日志记录注入我的服务库,但我从未看到日志消息。似乎当我单步执行代码时,即使我正在创建一个 Singleton LoggerFactory,该库也在创建工厂的一个新实例。

控制台应用程序

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>();
}

稍后在服务中,我将尝试记录一些内容,但日志中没有显示任何内容,但我确实看到了来自控制台应用程序的消息。

4

2 回答 2

0

我能够做更多的研究,实际上我只需要将我创建的记录器工厂添加到 ServicesCollection。

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

IServiceCollection services = new ServiceCollection();
services.AddSingleton(loggerFactory);
_provider = services.BuildServiceProvider();
于 2016-11-09T19:55:23.063 回答
0

尝试这个:

// 添加控制台日志记录 serviceCollection.AddSingleton(new LoggerFactory() .AddConsole(configuration.GetSection("Logging")) .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

于 2017-12-08T19:53:40.463 回答