【问题标题】:.Net Core Service writing to wrong event log.Net 核心服务写入错误的事件日志
【发布时间】:2020-02-03 18:01:28
【问题描述】:

我有一个 .net 3.1 核心服务并尝试写入特定的日志文件。日志信息不是转到新日志,而是尝试写入应用程序日志。 获取:“由于未处理的异常,该进程已终止。 异常信息:System.AggregateException:写入记录器时发生错误。 (源未在日志“应用程序”中注册。(已在日志中注册。)“

createhostbuilder中配置的代码是

    Host.CreateDefaultBuilder(args)
        .UseWindowsService()
        .ConfigureLogging((context, logging) =>
        {
            logging.AddEventLog(new EventLogSettings()
            {
                SourceName = <my service name>,
                LogName = <custom log name>,
                Filter = (x, y) => y >= LogLevel.Information
            });
            logging.AddConsole();
        })

        .ConfigureServices((hostContext, services) =>
        {
            services.AddHostedService<Worker>();
        });

使用 ilogger 很简单 _logger.LogInformation("我的消息");

【问题讨论】:

  • 非常感谢对此的反馈!

标签: .net .net-core service event-log


【解决方案1】:

“正在尝试写入特定的日志文件”

不,您绝对不是 - 您显示的代码正在尝试使用 Microsoft.Extensions.Logging.EventLog 写入 Windows 事件日志,写入源 &lt;my service name&gt;

假设这是您想要做的,而不是记录到文件,错误消息是明确的 - 您指定的事件日志源尚不存在。

你有两个选择:

  1. 首先创建事件日志源。这需要管理员权限,通常在应用程序安装程序中完成(您可以使用System.Diagnostics.EventLog.CreateEventSource
  2. 不要指定自定义源和日志名称,而是使用默认值 - 这意味着您的日志将使用 ".NET Runtime 源写入 Application 日志(安装 .NET 时会创建 AFAIK)

【讨论】:

  • 谢谢 Cocowalla... 这就是问题所在。我希望它们出现在我创建的自定义日志中。在管理员中打开 PS 并运行 New-EventLog -LogName -Source 没有在设置中指定我的日志,我可以很好地登录到应用程序日志,我真的想登录到我的 customeventlog
  • 好的,如果您先创建源代码,它会按预期工作吗?
  • 没有。当我默认使用appl日志时..它确实写在那里。但是,我想写入我创建的特定事件日志(上图)。通过错误消息,似乎 addeventlog() 和日志创建正在工作,但 ILogger 没有使用该特定日志(我认为......)
  • 啊,我不认为New-EventLog 允许您创建自定义日志 - 只能在标准日志之一(应用程序、系统...)中创建自定义来源跨度>
  • 相反,您可以使用eventcreate2 创建自定义日志
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-14
  • 2022-10-16
  • 1970-01-01
  • 1970-01-01
  • 2022-06-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多