5

我想了解有关将 Delphi 5 应用程序中的事件记录到 Windows 日志的信息,并且从此处的另一篇文章中我看到我可以使用TEventLogger该类来执行此操作。

但是,我找不到有关该TEventLogger.LogMessage过程语法的任何文档,因此我不知道所有参数的含义、如何使用它们,甚至不知道有哪些可能的值可用。

我试过环顾四周,我发现的只是 Embarcadero 的一个页面,说明该函数存在,但没有关于它的语法,MSDN 没有帮助,因为我只能找到对我没有好处的 BizTalk 版本。

有没有人有关于这方面的帮助页面或信息,可以说明我可以用它做什么?

4

2 回答 2

8

TEventLoggerTService.

您使用该函数记录消息TService.LogMessage(),而不是直接调用TEventLogger。的参数LogMessage()直接与 Win32 APIReportEvent()函数的参数匹配。

有关详细信息,请查看 Win32 API 文档。

如果您不编写服务应用程序,则需要直接调用 Win32 APIRegisterEventSource()ReportEvent()函数。

于 2009-08-20T00:08:56.353 回答
7

应用程序写入事件日志的简单示例:

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会给出这种混乱的描述:

找不到源 ( C:\Documents and Settings\fgaillard\My Documents\RAD Studio\Projects\Project1.exe ) 中事件 ID ( 0 ) 的描述。本地计算机可能没有必要的注册表信息或消息 DLL 文件来显示来自远程计算机的消息。您可以使用 /AUXSOURCE= 标志来检索此描述;有关详细信息,请参阅帮助和支持。以下信息是事件的一部分:* Blah Blah Blah *。

于 2009-08-20T00:49:48.807 回答