如何解决在 MassTransit 中使用 Serilog 进行日志记录
我尝试使用 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 不再有特定于日志的包。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。