EurekaLog捕获异常时如何获取回调?

问题描述 投票:0回答:1

我想添加 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
解决方案确实有效。我有很多不同的可能性,我数错了错误消息的数量......

delphi eurekalog
1个回答
0
投票

我感觉你问错了问题。看起来您正在尝试执行某种“重现步骤”行为。如果是这种情况 - 为什么要将日志信息转储到独立文件中?这没有任何意义。

您应该做的是将这些信息包含/捆绑到有关异常的错误报告中。如果您对此感到满意 - 请参阅 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);
© www.soinside.com 2019 - 2024. All rights reserved.