Asp.net core 如何使用依赖注入使Log4Net与ASP.NET Core 3.1一起工作?

Asp.net core 如何使用依赖注入使Log4Net与ASP.NET Core 3.1一起工作?,asp.net-core,dependencies,log4net,code-injection,Asp.net Core,Dependencies,Log4net,Code Injection,我尝试在ASP.NET Core 3.1应用程序中使用log4Net,并尝试使用控制器使其与依赖项注入一起工作。我能够使用LogManager.GetLogger(type)成功地使用Log4Net。任何帮助都将不胜感激 下面是我现在用于日志记录的代码示例: public class HomeController : Controller { private static readonly log4net.ILog _log = LogManager.GetLogger(typeof(L

我尝试在ASP.NET Core 3.1应用程序中使用log4Net,并尝试使用控制器使其与依赖项注入一起工作。我能够使用
LogManager.GetLogger(type)
成功地使用Log4Net。任何帮助都将不胜感激

下面是我现在用于日志记录的代码示例:

public class HomeController : Controller
{
    private static readonly log4net.ILog _log = LogManager.GetLogger(typeof(Logger));

    public HomeController()
    {
        _log.Debug("Test");
    }
}

要注入控制器的任何服务都必须在
Startup.ConfigureServices(IServiceCollection)
(Startup.cs)或
Program.CreateHostBuilder(string[])
(Program.cs)中注册,通常在
CreateDefaultBuilder
ConfigurWebHostDefaults
之后注册

您可以使用以下方法注册服务:

公共静态IHostBuilder CreateHostBuilder(字符串[]args)=>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder=>/*…*/)
.ConfigureLogging(生成器=>
{//此处的配置:
builder.SetMinimumLevel(LogLevel.Trace);
builder.AddLog4Net(“log4net.config”);
});
然后,您可以使用
Microsoft.Extensions.Logging.ILogger
(其中
T
是要记录的类)进行注入,它将使用Log4Net:

公共类HomeController:控制器{
私有只读ILogger_日志;
//运行时DI会创建一个合适的记录器实例:
公共家庭控制器(ILogger日志)
{
_log=log;
_调试(“测试”);
}
}

有关更多信息,请参见。

非常感谢。我知道我迟到了,但这真的帮了大忙。如果一篇帖子有帮助,你应该投它一票!这适用于网站上的任何地方:不要羞于投票好的、有用的内容。把它想象成向其他用户推荐它。我试过了。我不能,因为我还没有足够的声望点数。对不起,我忘了。