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



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

MassTransit使用来自容器的ILoggerFactory,所以只要日志提供者被配置并且是容器的一部分,它就会被解析和使用。不管它是Serilog,还是Microsoft Extensions Logging.

这个示例使用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.LoggingNuGet包。MassTransit不再有日志专用包。

最新更新