Есть что-нибудь полезное для TEventLogger?
Вопрос
Я хочу узнать о протоколировании событий из приложения Delphi 5 в журнал Windows и из другого сообщения здесь Я вижу, что я могу использовать TEventLogger
класс, чтобы сделать это.
Однако я не могу найти никакой документации по синтаксису TEventLogger.LogMessage
процедура, поэтому я не знаю, что означают все параметры, как их использовать или даже какие возможные значения доступны.
Я попытался поискать, и все, что я нахожу, это страница из Embarcadero, в которой указано, что функция существует, но ничего о ее синтаксисе, и MSDN не помогает, поскольку я могу найти только версию BizTalk, которая мне не помогает.
Есть ли у кого-нибудь страница справки или информация по этому вопросу, которая могла бы пролить некоторый свет на то, что я могу с этим сделать?
Решение
TEventLogger
является внутренним вспомогательным классом для TService
.
Вы регистрируете сообщение, используя TService.LogMessage()
функции, а не путем вызова в TEventLogger
напрямую.Параметры LogMessage()
непосредственно соответствует параметрам Win32 API ReportEvent()
функция.
Подробности смотрите в документации Win32 API.
Если вы не пишете приложение-сервис, то вам необходимо вызвать Win32 API RegisterEventSource()
и ReportEvent()
вместо этого функционирует напрямую.
Другие советы
Простой пример приложения, записывающего данные в журнал событий:
procedure WriteToLog(Msg:string; EventId: Word = 0);
var
h: THandle;
begin
h := RegisterEventSource(nil, PChar(Application.ExeName));
if h > 0 then
try
ReportEvent(h, 0, 0, EventId, nil, 1, 0, @Msg, nil);
finally
DeregisterEventSource(h);
end;
end;
procedure TForm7.Button1Click(Sender: TObject);
begin
WriteToLog('* Blah Blah Blah *');
end;
Но будьте осторожны, чтобы не регистрация идентификатора события в системе даст такого рода путаное описание:
Описание для идентификатора события ( 0 ) в источнике ( C:\Documents и Настройки\fgaillard\Мои документы AD Studio\Projects\Project1.exe ) не удается найти.На локальном компьютере может отсутствовать необходимая информация реестра или DLL-файлы сообщений для отображения сообщений с удаленного компьютера.Возможно, вы сможете использовать флаг /AUXSOURCE=, чтобы получить это описание;подробности см. в разделе Справка и поддержка. Следующая информация является частью мероприятия:* Бла -бла -бла *.