【发布时间】:2016-01-22 22:48:09
【问题描述】:
我想通过一个我只想记录字符串的附加组件来扩展我的 Eventlog(Windows 事件跟踪)。我正在使用如下代码。
#include <Evntprov.h>
#include <evntrace.h>
#include <minwindef.h>
// {38F4122A-4D8C-465A-9EFC-F7E632A84ABF}
static const GUID MyApplicationGuid = { 0x38f4122a, 0x4d8c, 0x465a, { 0x9e, 0xfc, 0xf7, 0xe6, 0x32, 0xa8, 0x4a, 0xbf } };
REGHANDLE regHandle = nullptr;
EventRegister(MyApplicationGuid, nil, nil, ®Handle);
EventWriteString(regHandle, TRACE_LEVEL_INFORMATION, 0x0, L"Hello");
EventWriteString(regHandle, TRACE_LEVEL_INFORMATION, 0x0, L", ");
EventWriteString(regHandle, TRACE_LEVEL_INFORMATION, 0x0, L"world");
EventWriteString(regHandle, TRACE_LEVEL_INFORMATION, 0x0, L"!");
EventUnregister(regHandle);
我已经注册了一个正确显示的提供程序,并且这些事件是 etl 日志文件的一部分,作为通用事件。到目前为止,一切似乎都很好,但是当我想将消息添加为列时,我无法看到记录的字符串,因为它们存储在二进制有效负载元素中。
我有一种方法可以定义事件/模板,以将使用 EventWriteString 完成的跟踪格式化为消息字符串。像“%1”这样的东西? (头属性STRING_ONLY是自动设置的。)
【问题讨论】: