任何光线下TEventLogger?(Any light for TEventLogger?)

2019-07-02 09:36发布

我希望看到来自一个Delphi 5应用到Windows日志中记录的事件,并从另一篇文章在这里我看到,我可以使用TEventLogger类来做到这一点。

但是,我找不到对语法的任何文件TEventLogger.LogMessage过程,所以我不知道是什么的所有参数的意思是,如何使用它们,甚至什么可能的值是可用的。

我试着环顾四周,所有我觉得是从Embarcadero公司以说明该功能存在,但没有关于它的语法和MSDN是没有帮助,因为我只能找到的BizTalk版本,确实我没有好。

有没有人有一个帮助页面或信息,这可能会揭示什么,我可以用它做一些轻?

Answer 1:

TEventLogger是一个内部辅助类TService

您可以使用日志消息TService.LogMessage()函数,而不是通过调用TEventLogger直接。 的参数LogMessage()直接匹配使用Win32 API的参数ReportEvent()函数。

查看详情,在Win32 API文档。

如果你不是在写一个服务应用程序,那么你需要调用Win32 API RegisterEventSource()ReportEvent()函数,而不是直接。



Answer 2:

应用程序写入事件日志中的一个简单的例子:

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;

但要注意的是不能与系统注册的事件ID会给这种困惑说明:

在源为事件ID(0)的描述(C:\ Documents和Settings \ fgaillard \我的文档\ RAD工作室\项目\ PROJECT1.EXE)不能被发现。 本地计算机可能没有必要的注册信息或消息DLL文件来从远程计算机显示消息。 您可以使用/ AUXSOURCE =标识来检索词描述; 详情请参阅帮助和支持。 以下信息是事件的一部分:*等等等等等等*。



文章来源: Any light for TEventLogger?