添加到依赖注入后如何访问 Log4Net
How to access Log4Net after adding it to Dependency Injection
这是我第一次使用 Microsoft.Extensions.Logging.Log4Net.AspNetCore
。
我有一个 WPF 应用程序,我在 App.xaml.cs
的 App
方法中的 CreateDefaultBuilder
中添加了 Log4Net 提供程序。紧接着,我想使用 LogInformation
说“启动应用程序”来写入日志文件。据我所知,由于将其添加到依赖注入容器的方式,我似乎无法做到这一点。我必须要么调用一个方法来访问参数列表中的 DI 容器,要么将 Log4Net
添加到 ServiceProvider
,然后以这种方式检索服务。但是,这似乎不对,因为我实际上会将 Log4Net 添加到 DI 两次。
有没有办法在配置 Log4Net 后立即访问 DI 容器,以便我可以写入日志文件?
Host = Microsoft.Extensions.Hosting.Host.CreateDefaultBuilder()
.ConfigureAppConfiguration((context, appBuilder) =>
{
// Do some stuff here
}).ConfigureLogging(logBuilder =>
{
logBuilder.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
logBuilder.AddLog4Net("log4net.config");
})
.ConfigureServices((context, services) =>
{
Configuration = context.Configuration;
ConfigureServices(Configuration, services);
})
.Build();
ServiceProvider = Host.Services;
// How to access Log4Net here?
_ISomeLogger.LogInformation("Starting Application");
更新
我正在使用以下示例:https://www.thecodebuzz.com/logging-using-log4net-net-core-console-application/
解决方案是在构建后立即从 ServiceProvider
访问 Log4Net
:
logger = (ILogger<Program>)ServiceProvider.GetService(typeof(ILogger<Program>));
这是我第一次使用 Microsoft.Extensions.Logging.Log4Net.AspNetCore
。
我有一个 WPF 应用程序,我在 App.xaml.cs
的 App
方法中的 CreateDefaultBuilder
中添加了 Log4Net 提供程序。紧接着,我想使用 LogInformation
说“启动应用程序”来写入日志文件。据我所知,由于将其添加到依赖注入容器的方式,我似乎无法做到这一点。我必须要么调用一个方法来访问参数列表中的 DI 容器,要么将 Log4Net
添加到 ServiceProvider
,然后以这种方式检索服务。但是,这似乎不对,因为我实际上会将 Log4Net 添加到 DI 两次。
有没有办法在配置 Log4Net 后立即访问 DI 容器,以便我可以写入日志文件?
Host = Microsoft.Extensions.Hosting.Host.CreateDefaultBuilder()
.ConfigureAppConfiguration((context, appBuilder) =>
{
// Do some stuff here
}).ConfigureLogging(logBuilder =>
{
logBuilder.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
logBuilder.AddLog4Net("log4net.config");
})
.ConfigureServices((context, services) =>
{
Configuration = context.Configuration;
ConfigureServices(Configuration, services);
})
.Build();
ServiceProvider = Host.Services;
// How to access Log4Net here?
_ISomeLogger.LogInformation("Starting Application");
更新
我正在使用以下示例:https://www.thecodebuzz.com/logging-using-log4net-net-core-console-application/
解决方案是在构建后立即从 ServiceProvider
访问 Log4Net
:
logger = (ILogger<Program>)ServiceProvider.GetService(typeof(ILogger<Program>));