我目前正在尝试缩短我的日志记录命令,因为在当前形式中,可能很难创建一种方法,允许在现有项目中轻松有效地实现。 我当前的标准日志命令如下所示:
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调用所在的前一个方法的名称。我认为有足够的调试信息这应该是可能的,但目前我看不出如何使这个工作。
答案 0 :(得分:5)
要获取调用者的名称而不是当前函数,请在调用Caller
时传递2而不是1。您可以根据需要远离调用堆栈。