使用 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
的使用)
如果你只想写字符串,那很简单,你只需要 RegisterEventSource
和 ReportEvent
。
大概是这样:
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++。如果您可以为您的日志记录组件编写托管代码,那么处理起来会更容易。
我想在我的 C++ 应用程序上使用日志。但是,我想使用 Windows (10) 事件查看器,而不是文本文件。我发现了一些奇怪的调用,我什至不知道参数是什么意思 - ReportEvent, OpenEventLog and some other Event Logging functions。由于我的应用程序存在一些限制,我也无法使用托管代码。
我也曾尝试使用此 link 上的代码,但出现编译错误(命名空间 'System' 未定义 - 似乎缺少一些包含文件...)。
我还没有找到可用的示例代码。
如果可能的话,我将不胜感激 - 只是来自本地应用程序的简单日志记录,它是用非托管 C++ 构建的。有人可以帮忙吗?
您的 link 无法编译,因为它是托管 C++(请注意 gcnew
的使用)
如果你只想写字符串,那很简单,你只需要 RegisterEventSource
和 ReportEvent
。
大概是这样:
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++。如果您可以为您的日志记录组件编写托管代码,那么处理起来会更容易。