In common logging V2.0当LogLevel高于日志条目时,有两种方法可以避免消息评估的成本:
if (Log.IsDebugEnabled)
Log.Debug("Debug message");
或
Log.Debug(a => a("Debug message"));
哪种做法更好?什么是专业人士和缺点
答案 0 :(得分:6)
根据文件:
利用lambda,ILog接口 提供全新的&写日志的安全方式 语句
log.Debug( m=>m("value= {0}", obj.Value) );
这确保了整个表达式仅在何时进行评估 LogLevel.Debug已启用,因此 使您免于必须写
if (log.IsDebugEnabled)
{
log.Debug("value={0}", obj.Value);
}
避免这种开销。
因此,您的选择中的第二个选项被视为最佳实践。