我有一个Windows应用程序,写到.NET事件查看器。
我想将一些日志映射到一个源,一些映射到另一个源(基于调用方类)。Program.cs中的设置如下所示:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging((hostingContext, logging) =>
{
logging.ClearProviders();
logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
logging.AddEventLog(new EventLogSettings()
{
LogName = "CustomerSearchScheduler",
SourceName = "CustomerSearchScheduler",
Filter = (source, level) => source.Contains("Schedulers")
});
logging.AddEventLog(new EventLogSettings()
{
LogName = "CustomerSearch",
SourceName = "CustomerSearch",
Filter = (source, level) => source.Contains("CustomerSearch") && !source.Contains("Schedulers")
});
logging.AddConsole();
})
//Web Host defaults.........
}问题是,AddEventLog似乎相互覆盖。使用上面的代码,没有任何输出到CustomerSearch,只有CustomerSearchScheduler显示新的日志。当我移除CustomerSearchScheduler部件时,第二种类型可以像预期的那样工作。
我怎样才能使这两者同时工作呢?
谢谢
发布于 2022-05-31 20:09:41
您需要显式地将事件日志提供程序添加到服务集合中:
logging.Services.AddSingleton<ILoggerProvider>(new EventLogLoggerProvider(settings));默认情况下不会将服务提供者添加两次。
https://stackoverflow.com/questions/72449841
复制相似问题