首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Microsoft.Extensions.Logging -添加多个windows事件日志

Microsoft.Extensions.Logging -添加多个windows事件日志
EN

Stack Overflow用户
提问于 2022-05-31 14:41:40
回答 1查看 291关注 0票数 0

我有一个Windows应用程序,写到.NET事件查看器。

我想将一些日志映射到一个源,一些映射到另一个源(基于调用方类)。Program.cs中的设置如下所示:

代码语言:javascript
复制
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部件时,第二种类型可以像预期的那样工作。

我怎样才能使这两者同时工作呢?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-31 20:09:41

您需要显式地将事件日志提供程序添加到服务集合中:

代码语言:javascript
复制
logging.Services.AddSingleton<ILoggerProvider>(new EventLogLoggerProvider(settings));

默认情况下不会将服务提供者添加两次。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72449841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档