如何解决添加到依赖注入后如何访问Log4Net
这是我第一次与 Microsoft.Extensions.Logging.Log4Net.AspNetCore
合作。
我有一个 WPF 应用程序,我在 CreateDefaultBuilder
的 App
方法中的 App.xaml.cs
中添加了 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/
解决方法
解决方案是在构建后立即从 Log4Net
访问 ServiceProvider
:
logger = (ILogger<Program>)ServiceProvider.GetService(typeof(ILogger<Program>));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。