【问题标题】:EventSource in .NET 4.6 & Event Viewer.NET 4.6 和事件查看器中的事件源
【发布时间】:2016-10-29 12:02:47
【问题描述】:

我想问一个关于使用 System.Diagnostics.Tracing.EventSource 和 .NET 4.6 类写入事件查看器的非常具体的问题。

过去,如果您想使用事件查看器通道,您需要编写/生成 XML 清单并将其注册到操作系统。现在还是这样吗?

如果是这样,我正在努力找出如何让构建生成清单,我相信这可以通过 EventSource nuget 包实现,但我想使用 System.Diagnostics 下的内置类。尽可能跟踪命名空间。

提前致谢。

【问题讨论】:

    标签: c# manifest etw etw-eventsource


    【解决方案1】:

    看看 NuGet 上的 Microsoft EventRegister Tool 包:

    此软件包包含 eventRegister.exe,它可以启用验证和 注册用户定义的 EventSource 类。它同时支持 BCL 事件源(类派生自 System.Diagnostics.Tracing.EventSource)和 NuGet 事件源 (从 Microsoft.Diagnostics.Tracing.EventSource 派生的类)。

    通过 VS 中的包管理控制台安装它:

    Install-Package Microsoft.Diagnostics.Tracing.EventRegister
    

    这会注册您的 Eventsource 类,以便您可以写入 Eventlog:

    [EventSource(Name = "Samples-EventSourceDemos-EventLog")]
    public sealed class MinimalEventSource : EventSource
    {
        public static MinimalEventSource Log = new MinimalEventSource();
    
        [Event(1, Message="{0} -> {1}", Channel = EventChannel.Admin)]
        public void Load(long baseAddress, string imageName)
        {
            WriteEvent(1, baseAddress, imageName);
        }
    }
    

    【讨论】:

    • 感谢您的及时回复,只是在通过我们的防火墙获取该软件包时遇到了一些问题,但我会尝试解决这个问题并让您知道我的进展情况。
    • 通过此链接获取软件包:nuget.org/api/v2/package/…(在您的智能手机上并在本地 nuget 路径中使用它:hanselman.com/blog/…
    • 你能使用 Nuget 包吗?
    • 您好,是的,我已经能够使用 nuget 包生成资源清单和 dll。我使用 wevtutil 向操作系统注册 DLL。频道出现在事件查看器中,但我目前无法让任何内容出现在日志中。我已经从项目的 bin 目录中注册了 manifest/dll。事件源类位于 WCF 服务中。
    • 奇怪的是,当我启用调试通道时,我开始在那里获取条目。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    相关资源
    最近更新 更多