我想添加 EurekaLog 创建 .el 文件时所有点击的记录。为此,每当 EurekaLog 捕获异常时,我都需要回调,这样我就可以将所有记录的点击转储到我自己的日志文件中。 EurekaLog 是否提供了一种方法来做到这一点?
我正在使用 Delphi 10.3 和 EurekaLog 7.7.8。
编辑:Brian 指出了 EurekaLog 回调,这正是我所需要的。不幸的是,我无法正确注册它们,我总是收到“E2250 没有可以使用这些参数调用的‘RegisterEventReproductRequest’的重载版本”错误。以下是我尝试过的不同格式的示例:
procedure OkTestThis(const ACustom: Pointer; AExceptionInfo: TEurekaExceptionInfo; var AReproduceText: String; var ACallNextHandler: Boolean);
procedure OkTestThisOther(AExceptionInfo: TEurekaExceptionInfo; var AReproduceText: String; var ACallNextHandler: Boolean);
TWhat = class
procedure what1(const ACustom: Pointer; AExceptionInfo: TEurekaExceptionInfo; var AReproduceText: String; var ACallNextHandler: Boolean);
procedure what2(AExceptionInfo: TEurekaExceptionInfo; var AReproduceText: String; var ACallNextHandler: Boolean);
end;
我也尝试过使用匿名函数。我需要如何格式化这个回调以便 Delphi 可以接受它?
再次编辑:实际上,
what2
解决方案确实有效。我有很多不同的可能性,我数错了错误消息的数量......
我感觉你问错了问题。看起来您正在尝试执行某种“重现步骤”行为。如果是这种情况 - 为什么要将日志信息转储到独立文件中?这没有任何意义。
您应该做的是将这些信息包含/捆绑到有关异常的错误报告中。如果您对此感到满意 - 请参阅 EurekaLog 的操作方法中的“如何将自定义信息添加到错误报告?”。
如果您仍然想将信息转储到独立文件中 - 那么,有一些事件可以实现,例如:
OnExceptionNotify
- 当 EurekaLog 处理异常时调用OnBeginReportGen
- 即将创建错误报告时调用附注关于“E2250 没有可以使用这些参数调用的‘RegisterEventReproductRequest’的重载版本”错误 - 不同版本的 EurekaLog 的事件参数可能略有不同。因此,如果您正在查看最新版本的示例代码并尝试在旧版本的 EurekaLog 中“按原样”使用它 - 这可能不起作用。
解决此问题的最简单方法是将
TEurekaLogEvents
组件放到表单上并从那里注册事件。 IDE 将自动生成正确的参数。请注意:使用组件注册事件处理程序有一些限制。
另一种方法是打开
EEvents.pas
单元并查看事件的声明。例如:
TELEvReproduceRequestProc = procedure(const ACustom: Pointer; AExceptionInfo: TEurekaExceptionInfo; var AReproduceText: String; var ACallNextHandler: Boolean);