IsDebugEnabled与Debug(Action <formatmessagehandler>)</formatmessagehandler>

时间:2011-01-12 09:29:51

标签: .net logging lambda

In common logging V2.0当LogLevel高于日志条目时,有两种方法可以避免消息评估的成本:

if (Log.IsDebugEnabled)
    Log.Debug("Debug message");

Log.Debug(a => a("Debug message"));

哪种做法更好?什么是专业人士和缺点

1 个答案:

答案 0 :(得分:6)

根据文件:

  

利用lambda,ILog接口   提供全新的&amp;写日志的安全方式   语句

log.Debug( m=>m("value= {0}", obj.Value) );
  

这确保了整个表达式仅在何时进行评估   LogLevel.Debug已启用,因此   使您免于必须写

if (log.IsDebugEnabled)
{
    log.Debug("value={0}", obj.Value);
}
  

避免这种开销。

因此,您的选择中的第二个选项被视为最佳实践。