如何使用依赖注入使 Log4Net 与 ASP.NET Core 3.1 一起工作?
How to make Log4Net work with ASP.NET Core 3.1 using Dependency Injection?
我正在尝试在 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)中注册,通常在[=14之后] =] 和 ConfigurWebHostDefaults
.
您可以使用以下方式注册服务:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder => /* ... */)
.ConfigureLogging(builder =>
{ // Configuration here:
builder.SetMinimumLevel(LogLevel.Trace);
builder.AddLog4Net("log4net.config");
});
然后,您可以使用 Microsoft.Extensions.Logging.ILogger<T>
注入(其中 T
是正在记录的 class),这将使用 Log4Net:
public class HomeController : Controller {
private readonly ILogger<HomeController> _log;
// A suitable logger instance is created by the runtime DI:
public HomeController(ILogger<HomeController> log)
{
_log = log;
_log.Debug("Test");
}
}
更多信息,here is a tutorial。
我正在尝试在 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)中注册,通常在[=14之后] =] 和 ConfigurWebHostDefaults
.
您可以使用以下方式注册服务:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder => /* ... */)
.ConfigureLogging(builder =>
{ // Configuration here:
builder.SetMinimumLevel(LogLevel.Trace);
builder.AddLog4Net("log4net.config");
});
然后,您可以使用 Microsoft.Extensions.Logging.ILogger<T>
注入(其中 T
是正在记录的 class),这将使用 Log4Net:
public class HomeController : Controller {
private readonly ILogger<HomeController> _log;
// A suitable logger instance is created by the runtime DI:
public HomeController(ILogger<HomeController> log)
{
_log = log;
_log.Debug("Test");
}
}
更多信息,here is a tutorial。