TEventLogger 有灯吗?
题
我想了解如何将 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;
但要注意的是不与系统中注册的EventID 会给这种困惑说明:
在源(C中的事件ID(0)的描述:\ Documents和 设置\ fgaillard \我的文档\的RAD Studio \项目\ PROJECT1.EXE) 无法找到。本地计算机可能没有必要的 注册信息或消息DLL文件来显示从消息 远程计算机。您可以使用/ AUXSOURCE =标志 检索此说明;详情请参阅帮助和支持。该 下面的信息是事件的一部分:*等等等等等等*