LogWriter.ShouldLog(..) 方法的行为基于什么?或使用它的真正意图是什么?它的文档页面非常稀疏,没有提供太多的见解。引用:



(在所有版本的企业库中都填写相同的错字,这使我想知道作者是否对此予以了很大的关注。)

该方法对我来说似乎比较空灵。我应该在登录之前始终检查它吗?

目前,我仅检查基于配置中显式设置的 LogWriter.IsLoggingEnabled(..) 。这代表了一种具体情况:日志记录已打开或关闭。

最佳答案

行为
LogWriter.ShouldLog( LogEntry logEntry )针对LogEntry中的数据查询所有已配置的过滤器,以确定是否应记录特定的LogEntry。如果所有过滤器都返回true(对于ShouldLog),则在调用Write方法时将记录LogEntry。尽管可以创建自己的自定义过滤器,但开箱即用的过滤器是Category,Priority和LoggingEnabled。

相反,IsLoggingEnabled检查仅检查一个过滤器,而ShouldLog调用检查所有过滤器(包括IsLoggingEnabled)。

意图

该调用的目的是,如果不记录LogEntry,则允许开发人员避免进行昂贵的操作。什么是“昂贵的”取决于应用和要求。例如在紧密循环中进行过多的字符串操作,或者可能进行了进程外调用,以检索某些信息(尽管这可能是缓存的不错选择!)。

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

通常,除非有充分的理由,否则我将避免调用ShouldLog

我可以想到一些原因:

  • 困惑代码
  • 如果您尝试使用辅助方法将代码弄乱,那么LogEntry通常将被完全填充,因此您可能始终无法避免任何操作(尽管您可以传递委托(delegate)而不调用它,但是我不会确保使事情变得简单)
  • 在内部,Write方法已经调用ShouldLog,因此,如果您正在记录日志,则对于记录的每条消息
  • 都会两次调用ShouldLog

    关于.net - 什么是LogWriter.ShouldLog(LogEntry)方法行为基于?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5554127/

    10-10 13:00