获取上一个/调用方法的名称

时间:2013-10-21 13:35:14

标签: delphi debugging logging delphi-xe3

我目前正在尝试缩短我的日志记录命令,因为在当前形式中,可能很难创建一种方法,允许在现有项目中轻松有效地实现。 我当前的标准日志命令如下所示:

logger.Fatal(CurrentFunctionName+' Grid beschriften:');

这是一个例子,它的输出如下:

2013 10 18 15.33.17.383 [FATAL] # [01290458] UTestMain.TFormMainTest.TitelGridRows (Line 229, "UPTestMain.pas") # Actual Log Message

所以我想到了我的基于jcl的CurrentFunctionName方法 (jcldebug.GetLocationInfoStr(Caller(1)))直接进入记录器的单元。它起作用但由于其预期的功能,它仅提供有关记录器单元内的方法的信息。 这就是我认为可能的方式,但我还没有找到正确的方法:

    procedure TLogger.Fatal(const AMsg : String);
begin
   log(TLevelUnit.FATAL,  PreviousFunctionName + AMsg);
end;

因此,我不想获取当前方法的名称,而是获取此logging-command调用所在的前一个方法的名称。我认为有足够的调试信息这应该是可能的,但目前我看不出如何使这个工作。

1 个答案:

答案 0 :(得分:5)

要获取调用者的名称而不是当前函数,请在调用Caller时传递2而不是1。您可以根据需要远离调用堆栈。