gpt4 book ai didi

c# - 为什么要在 log4net 中调用 IsDebugEnabled?

转载 作者:可可西里 更新时间:2023-11-01 03:05:53 25 4
gpt4 key购买 nike

我很好奇为什么我看到人们编写如下 log4net 日志记录代码:

if (_logger.IsDebugEnabled)
{
_logger.Debug("Some debug text");
}

我已经完成了 log4net 的反汇编,并且调用 Debug 会再次调用相同的代码以查看它是否在实际记录之前启用,因此 IsDebugEnabled 调用是不必要的,实际上是重复的代码。

人们这样做有什么原因吗?也许在旧版本中曾经需要但不再需要的旧模式?还是有正当理由?或者也许人们只是不知道他们不需要这样做?

其他级别(信息、错误、警告、最佳等)也有同样的行为。

最佳答案

此模式纯粹用于性能原因,特别是当记录到某个日志记录级别时将被跳过,因为当前未启用该日志记录级别。检查 bool 值 IsDebugEnabled 标志并跳过方法调用比使用参数调用 Debug 方法和不记录返回的方法要便宜得多。

如果您要调用 Debug 方法并传入包含创建成本很高的内容的消息,您可以通过首先检查启用标志来完全跳过消息的创建。

综上所述,除非您正在制作成本非常高的日志消息(例如堆栈跟踪之类的东西)或者您正在记录一个紧密的循环,否则它不太可能成为您代码的瓶颈.

关于c# - 为什么要在 log4net 中调用 IsDebugEnabled?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4382928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com