什么是 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
除非有令人信服的理由不这样做。
我能想到几个原因:
ShouldLog
因此,如果您正在登录,那么 ShouldLog
记录的每条消息都会被调用两次 关于.net - LogWriter.ShouldLog(LogEntry) 方法行为基于什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5554127/