我被告知要使用log4net将“日志”添加到我的代码中,问题是没有人能够及时旅行,看看需要使用日志来解决哪些现实世界的问题。
因此,有没有一组关于记录什么的指导方针,以便在之间进行合理的成本/收益权衡
因此:
应该将哪些类型的日志记录添加到应用程序中,以便以后使用?
(代码使用了大量的Winforms,一边是Winforms,另一边是通常在同一台机器上运行的“服务器”)
--
我已经期待了AJM的答案来做有用的博客帖子,它指向了很多评论,但如果有人提出了一组很好的"rules of thumb“,我很可能会改变预期的答案。
发布于 2009-12-15 03:36:09
我发现这篇文章很有帮助:http://blog.codinghorror.com/the-problem-with-logging/
特别是,我认为极简主义的方法确实是可行的。在过去,我试图记录太多日志,但这会使代码变得臃肿
此外,认为日志条目越多越好的想法是错误的,因为它会使日志本身膨胀。现在,我将日志记录的主要好处看作是提供了一个“立足点”或正在发生的事情的概述。如果需要特定区域的更多详细信息,那么就这么做,但默认位置应该越少越好
发布于 2009-12-15 16:37:26
要记住的一件事是,虽然您的配置将在不同的级别处理日志记录,但您可能会在日志调用中导致大量开销。例如:
// some kind of loop
// do some operations
Logger.LogDebug(myObject.GetXmlRepresentation());
// end loop显然,只有当您有一个监听调试日志的记录器时,这才会记录该对象,但是,无论您的记录级别如何,构建XML对象的调用都会运行,并且可能会导致一些相当大的速度减慢。
正确的解决方案应该是:
// some kind of loop
// do some operations
if (Logger.IsDebug)
{
Logger.LogDebug(myObject.GetXmlRepresentation());
}
// end loop发布于 2009-12-15 05:50:33
我最喜欢的关于这类问题的信息来源是Release It --一本来自实用主义者的书。强烈推荐。
关于您的问题,他们的基本观点是,日志记录应该面向操作级别的需求。运营人员最关心的是站点可能出现故障的异常情况(例如,连接池已满,到服务器的连接中断等)。确保消息是不言自明的,并且非常清楚问题是什么,如果适用,修复方法是什么。编写供人类使用的消息。
我在函数进入/退出样式日志中看不到一点。顶层捕获的异常的堆栈跟踪很有用,在可能发生系统崩溃的区域(即完整的连接池)周围记录日志是有用的,在系统之前崩溃的区域周围记录也是有用的。
https://stackoverflow.com/questions/1902133
复制相似问题