Вопрос

Я хочу узнать о протоколировании событий из приложения 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=, чтобы получить это описание;подробности см. в разделе Справка и поддержка. Следующая информация является частью мероприятия:* Бла -бла -бла *.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top