我目前正在尝试缩短我的日志记录命令,因为在其当前形式下,可能很难创建一种方法来允许在现有项目中轻松有效地实施。我当前的标准日志命令如下所示:
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;
因此,我不想获取当前方法的名称,而是获取调用此日志命令的前一个方法的名称。我认为有了足够的调试信息,这应该是可能的,但目前我看不到如何让它工作。