【问题标题】:Get name of the previous/calling method获取前一个/调用方法的名称
【发布时间】:2013-10-21 13:35:13
【问题描述】:

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

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;

因此,我不想获取当前方法的名称,而是想获取调用此日志命令的前一个方法的名称。我认为如果有足够的调试信息,这应该是可能的,但目前我看不到如何让它工作。

【问题讨论】:

标签: delphi debugging logging delphi-xe3


【解决方案1】:

要获取调用者的名称而不是当前函数,请在调用 Caller 时传递 2 而不是 1。您可以随心所欲地沿着调用堆栈前进。

【讨论】:

  • 今天早些时候,我尝试了一些关于 caller 参数的更改。但似乎我搞砸了检查正确的日志文件。谢谢。
猜你喜欢
  • 1970-01-01
  • 2016-03-13
  • 2011-01-04
  • 2013-07-07
  • 2017-04-19
  • 2011-07-03
  • 1970-01-01
  • 2019-01-07
  • 2016-11-01
相关资源
最近更新 更多