我一直在尝试在 .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);
}
}
我无法从侦听器生成清单。下面的代码
var manifestXml = EventSourceLogger.GetManifest();
当我尝试调用它时,我得到 NullReferenceException,请建议我遗漏任何东西。是否可以使用此版本将 EventMessage 推送到 EventViewer。
作为这个 NuGet 包的一部分,我有 eventRegister、Install Bat、Microsoft.Diagnostics.Tracing.EventSource.targets。我不确定这些将如何帮助清单生成。
如果有人对此有任何想法(或)工作,请提供帮助。
提前致谢。