Serilog.Sinks.EventLog - 事件 ID

Serilog.Sinks.EventLog - Event Id

我正在使用 Serilog.Sinks.EventLog 记录到事件查看器,使用 Serilog.Sinks.File 记录到文件。 两者都按预期工作,唯一的问题是当我登录到事件查看器时它采用随机事件 ID,是否有任何方法可以通过事件 ID.I 搜索了很多但没有找到任何解决方案。 我的要求是例如。当工作人员服务启动时,应记录事件 ID X,当发生某些错误时,应记录事件 ID Y。 我的appsettings.json配置如下:

{
    "Name": "EventLog",
    "Args": {
      "manageEventSource": false,
      "source": "CTS",
      "restrictedToMinimumLevel": "Error"
    }
  }

提前致谢。

为了定义自定义 EventID,您必须实现自己的 IEventIdProvider and then tell the sink to use your provider instead of the default one

.WriteTo(..., eventIdProvider: yourProvider)

public static LoggerConfiguration EventLog(
    this LoggerSinkConfiguration loggerConfiguration,
    string source,
    string logName = null,
    string machineName = ".",
    bool manageEventSource = false,
    string outputTemplate = DefaultOutputTemplate,
    IFormatProvider formatProvider = null,
    LogEventLevel restrictedToMinimumLevel = LevelAlias.Minimum,
    IEventIdProvider eventIdProvider = null) // <#<#<#<#<#<#<#<#<#<#<#<#
{
    // ...
}

接收器的源代码在 GitHub 上,它的工作原理很容易理解:https://github.com/serilog/serilog-sinks-eventlog