我尝试使用 MassTransit.SerilogIntegration
nuget,但它的最新版本似乎是 5.5.6。我使用的是 MassTransit 7.1.4,当我安装这个 Serilog nuget 时,我遇到一个异常,它找不到 ILog
接口。有没有办法在当前版本的 MassTransit 中使用 Serilog?
答案 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 不再有特定于日志的包。