Согласно документации:
Использование лямбд, интерфейс ILog
предлагает новый и безопасный способ записи журнала
заявления
log.Debug( m=>m("value= {0}", obj.Value) );
Это гарантирует, что все выражение оценивается только тогда, когда
LogLevel.Debug включен и, таким образом,
избавляет вас от необходимости писать
if (log.IsDebugEnabled)
{
log.Debug("value={0}", obj.Value);
}
чтобы избежать этих накладных расходов.
Так что второй вариант в вашем вопросе считается лучшей практикой.