.NET Core 6 - 如何在 Program.cs 中为依赖注入设置 ILogger(log4net)

.NET Core 6 - How to set ILogger(log4net) for Dependency Injection in Program.cs

我已将我的新项目移至 .NET Core 6,但显然程序和 Startup.cs 文件发生了根本性变化。

我想在每个具有依赖注入的控制器中使用 log4net,但我找不到任何关于登录 .NET Core 6.

的教程

我尝试了什么:

builder.Services.AddLogging();
builder.Logging.AddProvider(loggerProvider);

我应该写什么才能在控制器中使用 ILogger?

ASP.NET Core 6.0 中的登录在 Microsoft Docs. A very brief summary: You register the logging framework you want to use and then use ASP.NET Core's log layer in the application itself. The translation between the two log systems is done by a handler. For log4net there is a handler on GitHub.

中有详细描述

注册

安装处理程序包后,在 Program.cs 中的初始化代码中注册此处理程序:

// Add services to the container.
builder.Services.AddControllersWithViews();

// Add your logging handler
builder.Logging.AddLog4Net();

var app = builder.Build();

如果您的 old-style 模板带有单独的 Startup.cs,则必须改用项目自述文件中的示例代码。

写日志

现在您可以通过依赖注入在您的控制器中获取 ILogger 的实例并使用它进行记录。处理程序负责将这些日志相应地传递给 log4net。

private readonly ILogger<HomeController> logger;

public HomeController(ILogger<HomeController> logger)
{
    this.logger = logger;
}

public IActionResult Index()
{
    this.logger.LogDebug("Creating /Home/Index");
    return View();
}