gpt4 book ai didi

c# - 将 Serilog 作为 Microsoft.Extentions.Logging.ILogger 正确注入(inject) .net 核心类 - 不是 ASP .Net Core

转载 作者:行者123 更新时间:2023-12-04 12:40:38 24 4
gpt4 key购买 nike

所以我有一个 .Net Core 控制台应用程序和一堆 .Net 核心库。

库中的大多数类都有这样的构造函数。

public class ReportingManager
{
private ILogger _logger;
Public ReportingManager(ILogger logger)
{
_logger = logger;
}
}

ILogger类型为 Microsoft.Extentions.Logging.ILogger
在我的控制台应用程序中,我有这个。
class Program
{
static void Main(string[] args)
{
var serilog = new LoggerConfiguration()
.MinimumLevel.Debug()
.MinimumLevel.Override("Microsoft", Serilog.Events.LogEventLevel.Warning)
.Enrich.FromLogContext()
.WriteTo.Console(theme: AnsiConsoleTheme.Code)
.CreateLogger();

ReportingManager manager = new ReportingManager(serilog);

}
}

我在“ReportingManager manager = new ReportingManager(serilog);”处有一个智能感知错误

cannot convert from 'Serilog.Core.Logger' to 'Microsoft.Extensions.Logging.ILogger'



所以我的问题是,如何正确传入 Serilog?

在网上和这里看看,但大多数人都在谈论 ASP.Net Core。

最佳答案

您需要将 Serilog 记录器包装成 Microsoft.Extensions.Logging.LoggerFactory .这正是在 ASP.NET 中的 DI 中使用相同时发生的情况。

像这样 :

Serilog.Core.Logger serilog = ...;

var loggerFactory = new LoggerFactory()
.AddSerilog(serilog);

Microsoft.Extensions.Logging.ILogger logger = loggerFactory.CreateLogger("Logger");

这需要 Serilog.Extensions.Logging NuGet 包。

关于c# - 将 Serilog 作为 Microsoft.Extentions.Logging.ILogger 正确注入(inject) .net 核心类 - 不是 ASP .Net Core,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59681394/

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