gpt4 book ai didi

logging - Serilog.ILogger 可以转换为 Microsoft.Extensions.Logging.ILogger 吗?

转载 作者:行者123 更新时间:2023-12-03 23:41:32 24 4
gpt4 key购买 nike

我有记录到 Microsoft.Extensions.Logging.ILogger 的代码(主要是扩展方法)。
我已将 Serilog 配置为实际进行日志记录。
我找不到将 Serilog.ILogger 转换为 Microsoft.Extensions.Logging.ILogger 的方法。我假设 Serilog 将实现 Microsoft.Extensions.Logging.ILogger,但似乎没有。
有没有办法在 Serilog Logger 上获取 Microsoft.Extensions.Logging.ILogger 接口(interface)?
- - 谢谢
我的代码是:

        Serilog.Core.Logger seriLogger = new Serilog.LoggerConfiguration()
.WriteTo.Console()
.CreateLogger();
Serilog.ILogger seriILogger = seriLogger;

Microsoft.Extensions.Logging.ILogger msLogger = seriILogger;
生产
Cannot implicitly convert type 'Serilog.ILogger' to 'Microsoft.Extensions.Logging.ILogger'. An explicit conversion exists (are you missing a cast?)
类型转换让我遇到运行时错误:
无法将“Serilog.Core.Logger”类型的对象转换为“Microsoft.Extensions.Logging.ILogger”类型

最佳答案

除了安装Serilog.AspNetCore你也可以安装Serilog.Extensions.Logging并使用这些代码行。这会给你一些想法UseSerilog()在引擎盖下工作(好吧,或多或少是这样:D)。

var serilogLogger = new LoggerConfiguration()
.Enrich.FromLogContext()
.MinimumLevel.Verbose()
.WriteTo.Debug() // Serilog.Sinks.Debug
.CreateLogger();

var microsoftLogger = new SerilogLoggerFactory(serilogLogger)
.CreateLogger<IMyService>(); // creates an instance of ILogger<IMyService>
或者,如果您需要在 DI 容器中使用记录器,请使用以下代码行:
Log.Logger = serilogLogger;

var container = new ServiceCollection()
.AddLogging(x => x.AddSerilog())
.BuildServiceProvider(true);

关于logging - Serilog.ILogger 可以转换为 Microsoft.Extensions.Logging.ILogger 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65443870/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com