#c# #nlog
#c# #nlog
Вопрос:
Итак, я использую замок, встроенный в поддержку ведения журнала и выбранный для использования 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")
);
}
Итак, копаясь, я замечаю этот регистратор.Информация перегружена (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")
));
Ответ №1:
В вашем коде отсутствуют некоторые скобки, чтобы сделать его 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
он будет регистрировать строку.