需要记住的一点是,虽然您的配置将处理不同级别的日志记录,但您可能会在日志调用中造成大量开销.例如:
// some kind of loop
// do some operations
Logger.LogDebug(myObject.GetXmlRepresentation());
// end loop
Run Code Online (Sandbox Code Playgroud)
如果您有一个记录器侦听DEBUG日志,这显然只会记录该对象,但是无论您的日志记录级别如何,构建XML对象的调用都会运行,并且可能导致一些相当大的速度减慢.
正确的解决方案是:
// some kind of loop
// do some operations
if (Logger.IsDebug)
{
Logger.LogDebug(myObject.GetXmlRepresentation());
}
// end loop
Run Code Online (Sandbox Code Playgroud)
我发现这篇文章非常有用:http://blog.codinghorror.com/the-problem-with-logging/
特别是我认为极简主义的方法确实是要走的路.在过去,我试图记录太多,但这会使代码膨胀
还认为越多的日志条目越好,因为它会使日志本身膨胀.我现在将loggings的主要好处看作是提供"立足点"或概述正在发生的事情.如果特定区域需要更多细节,那么它是默认位置应该更少更好
我最喜欢这类问题的信息来源是Release It--一本来自Pragmatic人的书.强烈推荐.
他们关于您的问题的基本观点是,日志记录应该针对运营级别所需的内容.运营人员最关心的是网站可能出现故障的特殊情况(即连接池已满,与服务器的连接已关闭等)确保消息不言自明,并且非常清楚问题是什么,如果适用,修复是什么.写下供人食用的信息.
我在功能进入/退出样式日志中看到了一点点.顶级捕获异常的堆栈跟踪很有用,可以记录可能发生系统崩溃的区域(即完整连接池),以及记录系统崩溃之前的区域.
| 归档时间: |
|
| 查看次数: |
13015 次 |
| 最近记录: |