Я реализовал простую функцию для входа в программу просмотра событий из своего приложения. Однако я получаю следующее сообщение каждый раз, когда что-то регистрирую, независимо от уровня ошибки:
Не удается найти описание для события с идентификатором 0 из источника MyAppEvents. Либо компонент, вызывающий это событие, не установлен на вашем локальном компьютере, либо установка повреждена. Вы можете установить или восстановить компонент на локальном компьютере.
Если событие возникло на другом компьютере, отображаемая информация должна была быть сохранена вместе с событием.
Я не эксперт по журналу событий, на самом деле я впервые использую его на C++, и документация сбивает с толку и вводит в заблуждение...
Вот метод, который я реализовал, для инкапсуляции вызовов журнала событий:
HANDLE source = NULL;
void app_log(std::string m, WORD level) {
std::wstring msg_temp (m.begin(), m.end());
LPCWSTR msg = msg_temp.c_str();
std::wstring name(L"MyAppEvents");
if (source == NULL)
source = RegisterEventSource(NULL, name.c_str());
if (source) {
if (!ReportEvent(source, level, 0, 0, NULL, 1, 0, &msg, NULL))
std::cerr << "Error when logging";
}
else
std::cerr << "Error when logging";
}
У меня есть установщик для моего приложения, созданный с помощью WIX (этот установщик создает ключ, необходимый для входа в средство просмотра событий — подраздел приложения), и он работает без сбоев. Однако я не понял это сообщение, а также не знаю, как прикрепить установленное приложение к журналу событий - я даже не уверен, проблема ли в этом, или, может быть, это один из параметров, которые я Прохожу как NULL
или 0
.
Это сообщение появляется также при отладке (без установки, но с созданным вручную подразделом приложения).
Не могли бы вы помочь мне?
Я не могу использовать управляемый код C++...