ASP.NET日志记录 - log4net还是健康监测?

8

我正在查看一个全新的asp.net 3.5网站,它没有任何错误处理或日志记录。有哪些好的选项可以用于日志记录和处理错误?我已经在1.1框架上使用过Log4Net,但听说在3.5中可能有更好的选择。

6个回答

8

其中一种选择是ELMAH。我在这里提出了一个关于它的问题:ASP.NET错误处理

自那以后,我实现了一个稍微修改过的版本,记录和发送电子邮件非常好,并且可以通过web.config文件轻松集成。


我该如何保护它的日志页面? - Caveatrob
那是我“修改”的一部分。 我不想让任何已记录的信息被公开,所以我将其简化为仅将信息记录到数据库并向我发送电子邮件。 然后,当我收到电子邮件时,我可以去查看数据库日志。我也没有远程查看的要求。 - DCNYAM
2
Scott Hanselman也在他的博客上发布了一篇关于如何使用ELMAH进行快速启动的好文章:http://www.hanselman.com/blog/ELMAHErrorLoggingModulesAndHandlersForASPNETAndMVCToo.aspx - Zhaph - Ben Duguid

6
我们在日志记录中使用了两个选项:- ELMAH 用于处理意外的异常 NLog 用于预期的、手动的(调试、信息和错误)信息。 ELMAH 是一个非常好用的插件,它可以自动捕获异常(从404(页面未找到)到500异常抛出),并有内置的Web界面来可视化这些错误。因此,它是一种快速有效的抓取发生的意外错误的方法。
现在,NLog通过让我们的开发人员在特定位置手动插入调试信息来补充这一点,因此当我们需要从非本地主机系统中获取信息时,这非常容易。例如,我们在大多数方法中都会散布log.Debug(..)代码以查看本地变量或返回值等。对于更重要的信息,我们使用log.Info(..)..但使用较少。最后,对于我们已经捕获并处理的严重错误,我们使用log.Error(..)log.Warn(..)..通常位于某些try/catch范围内。因此,在我们的测试或生产服务器上,如果我们需要获取大量实时数据,则打开所有日志记录状态(例如Debug及以上)..或者只需一般重要信息,例如Info状态及以上。我们始终保持Warn,Error和Fatal状态始终开启。调试状态会生成大量数据,因此我们只会很少地使用它。
所以,总结一下,我建议你对WebApp使用两种方法。Elmah用于出色的意外错误捕获,NLog用于预期的信息和错误。最后,相比Log4Net,NLog要容易使用/运行。在我看来,它基本上替代了Log4Net。

4

如果您已经习惯了log4net,请继续使用它。它易于使用,快速且功能良好。我已经在1.1、2.0和现在的3.5版本中使用了多年。


3

0

-2

就我个人而言,我没有尝试过log4net,但看过winforms的规格和示例,但我们的组织编写了我们自己的记录机制,报告和记录在global.asax中捕获的错误,这些错误报告了我们需要知道的有关堆栈跟踪、会话(如果存在)、表单的NVC、应用程序的版本、来源于错误的URL查询字符串以及HTTP标头的所有内容。虽然我注意到并非所有错误都会在那里记录;例如,表单身份验证过期或应用程序池重新启动/关闭或由IIS报告的任何未由应用程序执行抛出的事情。


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