使用 C++ 在 Windows 上登录到事件查看器

Log to event viewer on Windows with C++

我想在我的 C++ 应用程序上使用日志。但是,我想使用 Windows (10) 事件查看器,而不是文本文件。我发现了一些奇怪的调用,我什至不知道参数是什么意思 - ReportEvent, OpenEventLog and some other Event Logging functions。由于我的应用程序存在一些限制,我也无法使用托管代码。

我也曾尝试使用此 link 上的代码,但出现编译错误(命名空间 'System' 未定义 - 似乎缺少一些包含文件...)。

我还没有找到可用的示例代码。

如果可能的话,我将不胜感激 - 只是来自本地应用程序的简单日志记录,它是用非托管 C++ 构建的。有人可以帮忙吗?

您的 link 无法编译,因为它是托管 C++(请注意 gcnew 的使用)

如果你只想写字符串,那很简单,你只需要 RegisterEventSourceReportEvent

大概是这样:

const char* custom_log_name = "MyLogName";

// create registry keys for ACLing described on MSDN: http://msdn2.microsoft.com/en-us/library/aa363648.aspx

HANDLE event_log = RegisterEventSource(NULL, custom_log_name);
const char* message = "I'm in an event log";
ReportEvent(event_log, EVENTLOG_SUCCESS, 0, 0, NULL, 1, 0, &message, NULL);

这只允许记录字符串。更复杂(和有用)的日志记录是可能的,但它相当涉及直接的 C++。如果您可以为您的日志记录组件编写托管代码,那么处理起来会更容易。