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

如何在EventViewer中捕获EventSource.WriteEvent并查看自定义事件?

如何在Event Viewer中捕获自定义EventSource事件

嘿,我来帮你搞定这个问题!首先咱们先修正代码里的一个小错误,然后一步步教你怎么在Event Viewer里看到这些事件。

第一步:修复你的EventSource代码

你当前的WriteEvent调用少传了关键的事件ID参数,这会导致事件无法正确输出。修改后的代码应该是这样的:

using System.Diagnostics.Tracing;
using System.IO;

[EventSource(Name = "MyProject-Foo")]
class FooEventWriter : EventSource
{
    // 静态实例,方便全局调用
    public static readonly FooEventWriter Instance = new FooEventWriter();

    [Event(1, Level = EventLevel.Error, Message = "Failed to do foo operation. Error: {0}")]
    public void WriteEventWhenFooErrorOccured(string errorMessage)
    {
        if (IsEnabled())
        {
            // 第一个参数必须是事件ID(对应[Event(1,...)]里的1),后面才是消息参数
            WriteEvent(1, errorMessage);
        }
    }

    // 用于生成事件清单的辅助方法
    public static void GenerateManifest()
    {
        var manifestContent = EventSource.GenerateManifest(typeof(FooEventWriter), Directory.GetCurrentDirectory());
        File.WriteAllText("MyProject-Foo.man", manifestContent);
    }
}

使用的时候,记得通过静态实例调用方法:

FooEventWriter.Instance.WriteEventWhenFooErrorOccured("测试错误信息");

第二步:生成并注册事件清单

Windows需要通过**事件清单(Manifest)**识别你的自定义EventSource,所以得先生成并注册它:

  1. 生成清单文件:调用上面的GenerateManifest()方法,会在程序目录下生成MyProject-Foo.man文件。
  2. 注册清单:以管理员身份打开命令提示符,切换到清单所在目录,运行以下命令:
    wevtutil im MyProject-Foo.man
    
    如果之后需要卸载这个事件源,用命令:
    wevtutil um MyProject-Foo.man
    

第三步:在Event Viewer中查看事件

完成注册后,就可以查看你的自定义事件了:

  • 打开Event Viewer:按下Win+R输入eventvwr回车。
  • 导航到Applications and Services Logs,找到你的事件源名称MyProject-Foo(如果没看到,重启Event Viewer或者触发一次事件试试)。
  • 当你的程序触发错误事件后,这个日志里就会出现对应的条目,双击可以查看详细信息,包括你传入的错误消息。

额外提示

  • 必须用管理员权限注册清单,否则会提示权限不足。
  • 如果事件没有立即显示,尝试重启Event Viewer或者重新触发事件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:53:12