所以我使用Castle支持日志记录并选择使用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)的重载 “懒惰装”。伟大的,现在我不需要拥有所有这些如果块到处=]
问题是(我仍然习惯了Func [ing]所以对我很轻松) 这个调用是否被传递给延迟加载Func,还是以字符串形式发送?
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")
));
答案 0 :(得分:4)
您的代码缺少一些括号,使其成为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
方法。