【发布时间】:2021-02-02 23:01:23
【问题描述】:
我尝试使用MassTransit.SerilogIntegration nuget,但看起来它的最新版本是 5.5.6。我正在使用 MassTransit 7.1.4,当我安装了这个 Serilog nuget 时,我遇到了一个异常,它找不到 ILog 接口。有没有办法在当前版本的 MassTransit 中使用 Serilog?
【问题讨论】:
标签: serilog masstransit
我尝试使用MassTransit.SerilogIntegration nuget,但看起来它的最新版本是 5.5.6。我正在使用 MassTransit 7.1.4,当我安装了这个 Serilog nuget 时,我遇到了一个异常,它找不到 ILog 接口。有没有办法在当前版本的 MassTransit 中使用 Serilog?
【问题讨论】:
标签: serilog masstransit
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 不再有特定于日志的包。
【讨论】: