LogWriter.ShouldLog(..)
方法行为基于什么?或者它使用的真正意图是什么?它的文档页面相当稀疏,并没有提供太多的洞察力。引用它:
查询是否记录 LogEntry [sic]。
(在所有版本的企业库中都有相同的错字,让我怀疑作者是否非常关注它。)
这种方法对我来说似乎相当空灵。我应该在登录前检查它吗?
目前我只检查LogWriter.IsLoggingEnabled(..)
哪个基于配置中的显式设置。这代表了一个具体的场景:日志记录要么打开要么关闭。
LogWriter.ShouldLog(..)
方法行为基于什么?或者它使用的真正意图是什么?它的文档页面相当稀疏,并没有提供太多的洞察力。引用它:
查询是否记录 LogEntry [sic]。
(在所有版本的企业库中都有相同的错字,让我怀疑作者是否非常关注它。)
这种方法对我来说似乎相当空灵。我应该在登录前检查它吗?
目前我只检查LogWriter.IsLoggingEnabled(..)
哪个基于配置中的显式设置。这代表了一个具体的场景:日志记录要么打开要么关闭。
LogWriter.ShouldLog( LogEntry logEntry )
针对 LogEntry 中的数据查询所有已配置的过滤器,以确定是否应记录特定的 LogEntry。Write
如果所有过滤器都返回 true(对于 ShouldLog),则在调用该方法时将记录 LogEntry 。开箱即用的过滤器是类别、优先级和 LoggingEnabled,尽管您可以创建自己的自定义过滤器。
相比之下,IsLoggingEnabled
检查只检查一个过滤器,而ShouldLog
调用检查所有过滤器(包括IsLoggingEnabled
)。
调用的目的是让开发人员在LogEntry
不记录的情况下避免昂贵的操作。什么“昂贵”将取决于应用程序和要求。例如,在一个紧密的循环中过度的字符串操作,或者可能是一个进程外调用来检索一些信息(尽管这可能是一个很好的缓存候选者!)。
一般来说,ShouldLog
除非有令人信服的理由不这样做,否则我会避免打电话。
我能想到几个原因:
ShouldLog
,所以如果你正在记录,那么ShouldLog
对于每条记录的消息都会被调用两次