Любой свет для 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 *.

Другие вопросы по тегам