Log4Net:Debug和Info有什么区别?

9
在Log4Net中,Debug方法和Info方法有什么区别?通常情况下,我应该何时使用其中一个而不是另一个?
例如:
try

{

 // updating the customer object

 log.Info ("before loading current customer");     //1
 Customer objCustomer=GetCurrentLoggedInCustomer();
 log.Info ("Current customer loaded ");  //2
 objCustomer.LastName="New name";
 log.Info("Before saving");   //3
 objCustomer.Save(); 
 log.Info("Saved");     //4

}
catch(Exception ex)
{
    log.Error(ex.Message);  //5
}

我是否应该在1、2、3、4位置使用Debug方法?


调试是为了调试。信息不是为了调试。这有什么混淆的?您能更新问题以解释为什么这个问题令人困惑吗?您能否举一个您认为存在歧义的数据示例? - S.Lott
2个回答

11

这与过滤特定信息的能力有关。

区别在于,您可以配置系统仅记录信息消息并忽略调试消息,或者您可以配置同时记录两者,并且最重要的是,您可以在不重新编译/更改程序的情况下执行此操作。

即使所有消息都被记录,如果您使用阅读器,则可以设置阅读器来过滤调试消息并仅显示较高级别(因此更重要的消息)

(注意,实际上还有更多日志记录级别,例如,警告、错误和致命)

我倾向于将信息用于旨在让我了解程序正在做什么(并确认它是否正常工作),并将调试用于我可能需要尝试跟踪为什么它无法正常工作的类型信息。

例如,我有一个服务在服务器上运行,定期从外部服务器下载文本文件,然后处理信息。我已将程序配置为仅记录信息消息,并使用log.info记录服务启动和停止以及其他一些重要消息。这样可以使日志文件变小,同时使我能够在每天使用中看到想要的信息。

但是,如果处理出现任何问题,我可能需要查看更多(也许可以说是调试)关于处理的文件内容和其他信息的详细信息,以指示它正在处理文件。

我不需要也不想一直记录此信息,因此通过使用log.debug,我可以忽略它,直到需要它的时候。 (我不想记录它的原因是输出非常大,因此会减慢进程速度)。


请注意,这些级别逐渐显示更多的数据。通常,INFO包括WARN、ERROR和FATAL。请参阅此SO问题:https://dev59.com/YGox5IYBdhLWcg3w3X9S#8926462 - erict

2

如果您只需要用于调试的信息,应该使用debug;这些信息有助于开发和改进代码,例如变量值。

例如在生产环境中,可以使用info来记录一些通用信息,比如“客户已保存”。

但要小心不要使用过多的日志,否则最坏情况下会拖慢应用程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接