gpt4 book ai didi

.net-4.0 - EventSource .net 4.0 生成 list

转载 作者:行者123 更新时间:2023-12-03 03:01:51 24 4
gpt4 key购买 nike

我一直在尝试在 .net 4.0 中使用 ETW。

我已开始使用 Microsoft EventSource Library 1.0.4-beta ( https://www.nuget.org/packages/Microsoft.Diagnostics.Tracing.EventSource )

这是我为我的应用程序生成事件而编写的代码。

[EventSource(Name = "Samples-EventSourceDemos-EventSourceLogger")]
public sealed class EventSourceLogger : EventSource
{
public static EventSourceLogger Log = new EventSourceLogger();

public static string GetManifest()
{
return GenerateManifest(typeof(EventSourceLogger), null);
}

[Event(200, Level = Microsoft.Diagnostics.Tracing.EventLevel.Informational, Task = EventTask.None, Version = 1,
Opcode = EventOpcode.Info, Keywords = EventKeywords.None, Channel = EventChannel.Admin,
Message = "Test Message")]
public void LogEtwInfoEventMessage(string jsonArgs)
{
if (!this.IsEnabled()) return;

this.WriteEvent(200, jsonArgs);
}

[Event(400, Level = Microsoft.Diagnostics.Tracing.EventLevel.Error, Task = EventTask.None, Version = 1,
Opcode = EventOpcode.Info, Keywords = EventKeywords.None, Channel = EventChannel.Admin, Message = "Test Message")]
public void LogEtwErrorEventMessage(string jsonArgs)
{
if (!this.IsEnabled()) return;

this.WriteEvent(400, jsonArgs);
}

[Event(500, Level = Microsoft.Diagnostics.Tracing.EventLevel.Warning, Task = EventTask.None, Version = 1,
Opcode = EventOpcode.Info, Keywords = EventKeywords.None, Channel = EventChannel.Admin, Message = "Test Message")]
public void LogEtwWarningEventMessage(string jsonArgs)
{
if (!this.IsEnabled()) return;

this.WriteEvent(500, jsonArgs);
}
}

我无法从监听器生成 list 。代码如下

var manifestXml = EventSourceLogger.GetManifest();

当我尝试调用此方法时,我收到 NullReferenceException,请建议我是否遗漏了任何内容。是否可以使用此版本将 EventMessage 推送到 EventViewer。

作为此 NuGet 包的一部分,我有 eventRegister、Install Bat、Microsoft.Diagnostics.Tracing.EventSource.targets。我不太确定这些将如何帮助 list 生成。

如果有人对此有任何想法(或),请提供帮助。

提前致谢。

最佳答案

@magicandre1981 的回答是正确的,因为没有必要使用较新版本的 .NETEventSource 生成 list 。 (事实上​​,它仍在发生,但它只是隐藏在构建事件后面,当您安装 EventSource package 时,该事件会被放入您的项目文件中。)

但是,根据您正在执行的操作,您可能仍然需要手动生成 list 。这是一种方法:

  1. 安装 EventSource package (Install-Package Microsoft.Diagnostics.Tracing.EventSource) 到您的项目中,或者在需要的地方下载并解压它
  2. 找到eventRegister.exe。 (它很可能位于与包安装文件夹相关的 packages\Microsoft.Diagnostics.Tracing.EventRegister.1.1.26\build 类似的文件夹下)
  3. 运行以下命令:

eventRegister.exe {path-to-dll-with-your-eventsource-class} {manifest-output-file-prefix}

之后,您将看到 dll 中的每个 EventSource 类都有两个文件:

  • {前缀}{事件源名称}.etwManifest.dll
  • {前缀}{事件源名称}.etwManifest.man

然后您可以将这些内容提供给 wevtutil :

wevtutil.exe 
im {EtwManifestManFile}
/rf:"{EtwManifestDllFile}"
/mf:"{EtwManifestDllFile}"

关于.net-4.0 - EventSource .net 4.0 生成 list ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18913364/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com