Любой свет для TEventLogger?
Я хочу посмотреть о регистрации событий из приложения Delphi 5 в журнал Windows, и из другого поста здесь я вижу, что я могу использовать TEventLogger
класс, чтобы сделать это.
Тем не менее, я не могу найти документацию по синтаксису TEventLogger.LogMessage
процедура, поэтому я не знаю, что означают все параметры, как их использовать, и даже какие возможные значения доступны.
Я попытался осмотреться, и все, что я нашел, - это страница от Embarcadero, в которой говорится, что функция существует, но ничего не говорит о ее синтаксисе, и MSDN не помогает, поскольку я могу только найти версию BizTalk, которая мне не помогает.
У кого-нибудь есть страница помощи или информация по этому вопросу, которая может пролить свет на то, что я могу с ней сделать?
2 ответа
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;
Но имейте в виду, что отсутствие регистрации EventID в системе приведет к путанице такого рода:
Описание для идентификатора события ( 0) в источнике ( C:\Documents and Settings\fgaillard\ Мои документы \RAD Studio\Projects\Project1.exe) не найдено. Локальный компьютер может не иметь необходимой информации реестра или файлов DLL сообщений для отображения сообщений с удаленного компьютера. Вы можете использовать флаг /AUXSOURCE=, чтобы получить это описание; см. Помощь и Поддержка для деталей. Следующая информация является частью мероприятия: * Blah Blah Blah *.