Uwp 使用FileLoggingSession和MS消息分析器进行Windows 10日志记录

Uwp 使用FileLoggingSession和MS消息分析器进行Windows 10日志记录,uwp,etw,Uwp,Etw,在我的Win10 UWP应用程序中,我使用FileLoggingSession在我的应用程序中记录各种事件。我想使用LoggingFields将自定义字段添加到我的日志消息中 我们正在使用Microsoft Message Analyzer查看日志。但是,自定义字段会显示得乱七八糟 以下是我用于自定义字段的代码: var channel = new LoggingChannel("MyChannel"); var fields = new LoggingFields(); fields.Add

在我的Win10 UWP应用程序中,我使用FileLoggingSession在我的应用程序中记录各种事件。我想使用LoggingFields将自定义字段添加到我的日志消息中

我们正在使用Microsoft Message Analyzer查看日志。但是,自定义字段会显示得乱七八糟

以下是我用于自定义字段的代码:

var channel = new LoggingChannel("MyChannel");
var fields = new LoggingFields();

fields.AddString("Source", Source);
fields.AddString("Class", LogClass);
fields.AddString("Message", Message);
channel.LogEvent("MyEvent", fields, LoggingLevel.Information);
当我通过Message Analyzer读取日志,然后导出到csv时,这是我在源字段
GetPolicy()ŒƄƄƄƄƄ†-
中看到的示例,它应该位于
GetPolicy()
的位置


但是,如果我使用tracerpt将信息提取到xml中,结果确实是正确的:
GetPolicy()

LoggingChannel.LogEvent(TraceLogging)使用的事件编码系统相对较新,我怀疑并非所有ETW解码工具都能跟上它。如果使用另一个工具(如tracerpt、wpa或xperf)进行解码,会发生什么情况

TraceLogging编码系统特别棘手的一点是,事件实际上没有唯一的事件id,因此解码工具只能看到一组事件id为0的事件。如果解码器只是直接使用tdh API,这将不会是一个问题。但是,如果该工具试图缓存解码信息,它将变得混乱。我怀疑MessageAnalyzer正在缓存它看到的第一个事件的解码信息,然后将其用于所有剩余事件。解码跟踪记录事件时不应使用缓存


如果最新的Message Analyzer仍然存在此问题,那么它可能是一个可以在下一版本中修复的错误。

您测试过此问题吗?我的理解是:如果您使用LoggingFields在日志文件中添加字段,并且如果MessageAnalyzer支持您的日志文件类型,那么所有字段都应该在MessageAnalyzer中正确显示。请告诉我你的最新情况。谢谢。好的,我看到了。在字段选择器中,我查找我的频道名称,我将看到我创建的事件,然后它包含所有字段。但是,我注意到在MessageAnalyzer中,事件字段前后都有额外的unicode字符,请在这里发布关于如何调用LoggingFields的代码好吗?我想字段格式有问题。我用最新版本的MessageAnalyzer更新了帖子,现在似乎可以正常工作了。