IsDebugEnabled和Debug(Action<FormatMessageHandler>)的区别

3
在通用日志记录 V2.0 中,当 LogLevel 高于日志条目时,有两种避免消息评估成本的方法:连接1
if (Log.IsDebugEnabled)
    Log.Debug("Debug message");

或者

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

哪种做法更好?它们的优缺点是什么?

1个回答

6
根据文档:
利用 lambda,ILog 接口提供了一种新的、安全的编写日志语句的方式。
log.Debug( m=>m("value= {0}", obj.Value) );

这样可以确保只有在启用LogLevel.Debug时才评估整个表达式,从而避免您编写以下内容。
if (log.IsDebugEnabled)
{
    log.Debug("value={0}", obj.Value);
}

为了避免这种额外的开销。因此,你提出的第二个选项被认为是最佳实践。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接