在 MassTransit 中使用 Serilog 进行记录

Raf*_*ski 3 masstransit serilog

我尝试过使用MassTransit.SerilogIntegrationnuget,但看起来它的最后版本是5.5.6。我使用的是 MassTransit 7.1.4,当我安装这个 Serilog nuget 时,我遇到了一个异常,它找不到接口ILog。有没有办法将 Serilog 与当前版本的 MassTransit 一起使用?

Chr*_*son 5

大众运输使用ILoggerFactory从容器中使用,因此只要配置了日志记录提供程序并且它是容器的一部分,它就会被解析和使用。无论是 Serilog 还是 Microsoft Extensions Logging,都没有关系。

\n

该示例使用 Serilog \xe2\x80\x93 事实上,几乎我所有的示例都使用它。

\n

这可以在以下Hosting级别进行配置:

\n
return Host.CreateDefaultBuilder(args)\n.UseSerilog((host, log) =>\n{\n    if (host.HostingEnvironment.IsProduction())\n        log.MinimumLevel.Information();\n    else\n        log.MinimumLevel.Debug();\n\n    log.MinimumLevel.Override("Microsoft", LogEventLevel.Warning);\n    log.WriteTo.Console();\n})\n
Run Code Online (Sandbox Code Playgroud)\n

或者在程序级别:

\n
Log.Logger = new LoggerConfiguration()\n    .MinimumLevel.Information()\n    .MinimumLevel.Override("JobService", Serilog.Events.LogEventLevel.Debug)\n    .MinimumLevel.Override("Microsoft", Serilog.Events.LogEventLevel.Warning)\n    .MinimumLevel.Override("Microsoft.EntityFrameworkCore", Serilog.Events.LogEventLevel.Warning)\n    .MinimumLevel.Override("Microsoft.EntityFrameworkCore.Database.Command", Serilog.Events.LogEventLevel.Warning)\n    .Enrich.FromLogContext()\n    .WriteTo.Console()\n    .CreateLogger();\n\nreturn Host.CreateDefaultBuilder(args)\n    .ConfigureWebHostDefaults(webBuilder =>\n    {\n        webBuilder.UseStartup<Startup>();\n    })\n    .UseSerilog();\n
Run Code Online (Sandbox Code Playgroud)\n

这些都使用Serilog.Extensions.LoggingNuGet包。MassTransit 不再有特定于日志的软件包。

\n