我有一个实施.Net Core托管模式的项目。
所以我有一个主机生成器:
public static async Task Main(string[] args)
{
var builder = new HostBuilder()
.ConfigureAppConfiguration((hostingContext, config) =>
{
...
})
.ConfigureServices((hostContext, services) =>
{
services.AddSingleton<IHostedService, SkillsService>();
})
.ConfigureLogging((hostingContext, logging) =>
{
logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
logging.AddConsole();
});
await builder.RunConsoleAsync();
}
和服务:
public class SkillsService : IHostedService, IDisposable
{
...
public SkillsService(ILogger<SkillsService> logger)
{
...
}
public async Task StartAsync(CancellationToken cancellationToken)
{
...
}
public Task StopAsync(CancellationToken cancellationToken)
{
...
}
public void Dispose()
{
...
}
}
现在,在StartAsync方法中,我想从我自己的库中创建一个类的实例,并且该类也正在实现ILogger接口。因此,我需要使用IHostBuilder的配置创建Logger的新实例,但类别要与该库的完整名称空间名称匹配,然后将此类logger注入类。我发现了很多有关创建新LoggerFactory实例并对其进行配置的信息,但是我想重用HostBuilder已经设置的实例。我应该怎么做? IHostedService内部没有LoggerFactory。
对于日志记录,我使用的是Microsoft.Extensions.Logging命名空间。
感谢您的任何建议。
乔治
答案 0 :(得分:0)
据我所知,我不得不安装一些块以增强Microsoft.Extensions.Logging
,如果要将日志存储到文件中
让我知道是否可以解决您的问题。
致谢。