在 MassTransit 中使用 Serilog 进行记录
Logging with Serilog in MassTransit
我尝试使用 MassTransit.SerilogIntegration
nuget,但它的最新版本似乎是 5.5.6。我正在使用 MassTransit 7.1.4,当我安装了这个 Serilog nuget 时,我遇到了一个异常,它找不到 ILog
接口。有什么方法可以在当前版本的 MassTransit 上使用 Serilog 吗?
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 不再有日志特定包。
我尝试使用 MassTransit.SerilogIntegration
nuget,但它的最新版本似乎是 5.5.6。我正在使用 MassTransit 7.1.4,当我安装了这个 Serilog nuget 时,我遇到了一个异常,它找不到 ILog
接口。有什么方法可以在当前版本的 MassTransit 上使用 Serilog 吗?
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 不再有日志特定包。