城堡日志记录器和延迟加载函数

本文关键字:string 函数 延迟加载 日志 记录器 城堡 | 更新日期: 2023-09-27 18:10:27

所以我使用城堡内置的日志支持,并选择利用NLog。

所以我已经用NLog做了一些阅读,似乎以前你总是想把任何日志消息包装在if块中,通过不计算消息的值来提高性能,除非它确实需要。我明白了,虽然很丑,但还是有意义的。

if (Logger.IsInfoEnabled)
{
      Logger.InfoFormat
      (
       "some info message with a process running for dates of {0} to {1}",
          fromDate.ToString("MM/dd/yyyy"),
          toDate.ToString("MM/dd/yyyy")
      );
}

我注意到Logger。Info有一个重载函数(Func)"懒加载"。太好了,现在我不需要到处都有这些if块了=]

问题是(我还在适应Func[ing]所以别对我太苛刻)这个调用是传递给延迟加载函数还是作为字符串发送?

 Logger.Info
     (string.Format(
        "some info message with a process running for dates of {0} to {1}",
        fromDate.ToString("MM/dd/yyyy"), 
        toDate.ToString("MM/dd/yyyy")
     ));

城堡日志记录器和延迟加载函数<string>

您的代码缺少一些括号,使其成为Func

Logger.Info(() =>
    string.Format(
        "Check Pam Calendar for holidays for date range {0} to {1}", 
        fromDate.ToString("MM/dd/yyyy"), 
        toDate.ToString("MM/dd/yyyy")
     ));

这是编写代码的正确方式- string.Format方法只会在Logger要记录字符串时被调用