我希望看到将事件从Delphi 5应用程序记录到Windows日志,以及从另一篇帖子here中看到我发现我可以使用TEventLogger
类来执行此操作。
但是,我找不到关于TEventLogger.LogMessage
过程语法的任何文档,因此我不知道所有参数的含义,如何使用它们,甚至可能的值。< / p>
我试过环顾四周,我发现的是Embarcadero的一个页面,说明该函数存在,但其语法没有任何内容,MSDN没有帮助,因为我只能找到对我没用的BizTalk版本。
是否有人有关于此的帮助页面或信息可能会对我可以用它做些什么有所了解?
答案 0 :(得分:8)
TEventLogger
是TService
的内部帮助程序类。
您使用TService.LogMessage()
功能记录消息,而不是直接呼叫TEventLogger
。 LogMessage()
的参数与Win32 API ReportEvent()
函数的参数直接匹配。
查看Win32 API文档以获取详细信息。
如果您没有编写服务应用程序,则需要直接调用Win32 API RegisterEventSource()
和ReportEvent()
函数。
答案 1 :(得分: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;
但要注意不是registering the EventID with the system会给出这种混淆的描述:
源中的事件ID(0)的描述(C:\ Documents and 设置\ fgaillard \我的文档\ RAD Studio \ Projects \ Project1.exe) 无法找到。本地计算机可能没有必要 注册表信息或消息DLL文件来显示来自的消息 远程计算机。您可以使用/ AUXSOURCE =标志 检索此描述;请参阅帮助和支持以获取详细信该 以下信息是活动的一部分:* Blah Blah Blah *。