gpt4 book ai didi

.net - LogWriter.ShouldLog(LogEntry) 方法行为基于什么?

转载 作者:行者123 更新时间:2023-12-04 15:03:53 24 4
gpt4 key购买 nike

什么是 LogWriter.ShouldLog(..) 方法行为基于?或者它使用的真正意图是什么?它的文档页面相当稀疏,并没有提供太多的洞察力。引用它:

Queries whether a LogEntry shold[sic] be logged.



(在所有版本的企业库中都有相同的错字,这让我怀疑作者是否非常关注它。)

这种方法对我来说似乎相当空灵。我应该在登录前检查它吗?

目前我只检查 LogWriter.IsLoggingEnabled(..) 它基于配置中的显式设置。这代表了一个具体的场景:日志记录要么打开要么关闭。

最佳答案

行为
LogWriter.ShouldLog( LogEntry logEntry )针对 LogEntry 中的数据查询所有已配置的过滤器,以确定是否应记录特定的 LogEntry。如果所有过滤器都返回 true(对于 ShouldLog),那么如果 Write 将记录 LogEntry方法被调用。开箱即用的过滤器是类别、优先级和 LoggingEnabled,尽管您可以创建自己的自定义过滤器。
IsLoggingEnabled相比之下,检查只检查一个过滤器,而 ShouldLog call 检查所有过滤器(包括 IsLoggingEnabled )。

意图

调用的目的是让开发人员避免在 LogEntry不会被记录。什么“昂贵”将取决于应用程序和要求。例如在一个紧密的循环中进行过多的字符串操作,或者可能是一个进程外调用来检索一些信息(尽管这可能是一个很好的缓存候选者!)。

我应该在登录前检查它吗?

一般来说,我会避免调用 ShouldLog除非有令人信服的理由不这样做。

我能想到几个原因:

  • 它使代码困惑
  • 如果您尝试使用辅助方法整理代码,那么 LogEntry 通常会被完全填充,因此您可能无论如何都不会避免任何操作(尽管您可以传入一个委托(delegate)而不调用它,但我不确定这让事情变得更简单)
  • 在内部,Write 方法已经调用了 ShouldLog因此,如果您正在登录,那么 ShouldLog记录的每条消息都会被调用两次
  • 关于.net - LogWriter.ShouldLog(LogEntry) 方法行为基于什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5554127/

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