IsDebugEnabled 与 Debug(Action)

发布于 2024-10-11 17:53:46 字数 303 浏览 2 评论 0原文

在公共日志记录V2.0中,当LogLevel高于日志条目时,有两种方法可以避免消息评估的成本:

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

或者

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

哪种做法更好?有什么优点和优点?缺点?

In common logging V2.0 there are two methods of avoiding costs of message evaluation when LogLevel is higher than the log entry:

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

or

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

Which practice is better? What are the pros & cons?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

‘画卷フ 2024-10-18 17:53:46

根据文档:

利用 lambdas、ILog 接口
提供了一个新的&安全写入日志的方法
声明

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

这确保了整个表达式仅在以下情况下才被求值:
LogLevel.Debug 已启用,因此
使您无需编写

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

以避免这种开销。

因此,您问题中的第二个选项被认为是最佳实践。

According to documentation:

Leveraging lambdas, the ILog interface
offers a new & safe way to write log
statements

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

This ensures, that the whole expression is only evaluated when
LogLevel.Debug is enabled and thus
saves you from having to write

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

to avoid this overhead.

So the second option in your quesetion considered a best practice.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文