You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Serilog.Sinks.EventLog写入事件查看器时如何自定义指定Event ID

解决方案

Serilog.Sinks.EventLog 会优先读取日志事件中名为 EventId 的属性值作为Windows事件查看器的事件ID,你可以通过以下两种方式自定义指定:

方式1:写日志时手动附加(灵活适配单条日志需求)

在需要指定Event ID的日志调用前通过ForContext附加EventId属性即可:

// 服务启动时指定Event ID为X(示例为1001)
Log.ForContext("EventId", 1001)
   .Information("工作服务正常启动");

// 发生错误时指定Event ID为Y(示例为2001)
Log.ForContext("EventId", 2001)
   .Error(exception, "服务运行过程中出现未处理异常");

方式2:全局统一配置(适合固定规则的场景)

如果要按日志级别、内容等规则自动匹配Event ID,可以自定义日志增强器统一注入:

  1. 实现自定义Enricher
using Serilog.Core;
using Serilog.Events;

public class CustomEventIdEnricher : ILogEventEnricher
{
    public void Enrich(LogEvent logEvent, ILogEventPropertyFactory propertyFactory)
    {
        // 错误日志统一用Event ID 2001
        if (logEvent.Level == LogEventLevel.Error)
        {
            logEvent.AddPropertyIfAbsent(
                propertyFactory.CreateProperty("EventId", 2001));
            return;
        }
        
        // 启动日志统一用Event ID 1001
        if (logEvent.MessageTemplate.Text.Contains("启动"))
        {
            logEvent.AddPropertyIfAbsent(
                propertyFactory.CreateProperty("EventId", 1001));
            return;
        }
        
        // 其他日志默认用Event ID 0,避免生成随机ID
        logEvent.AddPropertyIfAbsent(
            propertyFactory.CreateProperty("EventId", 0));
    }
}
  1. 注册Enricher到Serilog配置
// Program.cs 中配置Serilog时添加
Log.Logger = new LoggerConfiguration()
    .ReadFrom.Configuration(Configuration)
    .Enrich.With<CustomEventIdEnricher>() // 注入自定义增强器
    .CreateLogger();

可选配置修改

你可以在原有appsettings.json的EventLog Sink配置中添加defaultEventId参数,设置无指定Event ID时的默认值,彻底避免随机ID生成:

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

内容的提问来源于stack exchange,提问作者SidD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 06:12:03