在 MassTransit 中使用 Serilog 进行日志记录

时间:2021-02-02 14:50:47

标签: serilog masstransit

我尝试使用 MassTransit.SerilogIntegration nuget,但它的最新版本似乎是 5.5.6。我使用的是 MassTransit 7.1.4,当我安装这个 Serilog nuget 时,我遇到一个异常,它找不到 ILog 接口。有没有办法在当前版本的 MassTransit 中使用 Serilog?

1 个答案:

答案 0 :(得分:1)

MassTransit 使用容器中的 ILoggerFactory,因此只要配置了日志记录提供程序并且是容器的一部分,它将被解析和使用。不管是 Serilog 还是 Microsoft Extensions Logging。

This sample 使用 Serilog – 事实上我几乎所有的样本都使用它。

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

return Host.CreateDefaultBuilder(args)
.UseSerilog((host, log) =>
{
    if (host.HostingEnvironment.IsProduction())
        log.MinimumLevel.Information();
    else
        log.MinimumLevel.Debug();

    log.MinimumLevel.Override("Microsoft", LogEventLevel.Warning);
    log.WriteTo.Console();
})

或在程序级别:

Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Information()
    .MinimumLevel.Override("JobService", Serilog.Events.LogEventLevel.Debug)
    .MinimumLevel.Override("Microsoft", Serilog.Events.LogEventLevel.Warning)
    .MinimumLevel.Override("Microsoft.EntityFrameworkCore", Serilog.Events.LogEventLevel.Warning)
    .MinimumLevel.Override("Microsoft.EntityFrameworkCore.Database.Command", Serilog.Events.LogEventLevel.Warning)
    .Enrich.FromLogContext()
    .WriteTo.Console()
    .CreateLogger();

return Host.CreateDefaultBuilder(args)
    .ConfigureWebHostDefaults(webBuilder =>
    {
        webBuilder.UseStartup<Startup>();
    })
    .UseSerilog();

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