我正在查看3.5中一个新的asp.net站点,它绝对没有错误处理或日志记录。记录和处理错误有哪些好的选择?我在1.1框架上使用过Log4Net,但听说3.5中有更好的选择。
答案 0 :(得分:8)
一个选项是ELMAH。我在这里问了一个问题:ASP.NET Error Handling。
从那时起,我已经实现了它的略微修改版本,并且日志和电子邮件非常好,并且很容易通过web.config文件进行集成。
答案 1 :(得分:6)
我们使用两个选项进行记录: -
ELMAH用于意外的异常处理
NLog用于预期的手动(调试,信息和错误)信息。
ELMAH 是一个非常好的开箱即用插件,可以自动捕获异常(从404(未找到页面)到500异常抛出),并有一个内置的web-ui可视化这些错误。因此,这是一种非常快速有效的方法来抓取发生的意外错误。
现在 NLog 赞美这让我们的开发人员手动将调试信息插入到特定位置的代码中,因此当我们需要从非locahost系统获取信息时,这很容易。例如,我们在大多数方法中丢弃log.Debug(..)
代码来查看局部变量或返回值等等。对于更重要的信息,我们然后使用log.Info(..)
..但是使用它的次数要少得多。最后,对于我们陷入困境和处理的严重错误,我们通常在log.Error(..)
范围内使用log.Warn(..)
或try/catch
。因此,在我们的测试或实时服务器上,如果我们需要获取大量数据,实时...或者仅仅是一般重要信息,例如{{Debug
和更高版本,我们就会打开所有日志记录状态(例如Info
和更高)。 1}}状态和更大。我们总是有Warn, Error and Fatal
个州。调试状态生成大量数据,因此我们只是谨慎使用它。
总而言之,我建议您对WebApp使用两种方法。 Elmah用于出色的意外错误捕获和NLog用于预期的信息和错误。
最后,NLog比WA4更容易使用/工作。它基本上取代了它,IMO。
答案 2 :(得分:4)
如果你习惯log4net,坚持你所知道的。它简单,快速,而且效果很好。我已经在1.1,2.0和现在使用它多年了。
答案 3 :(得分:3)
ASP.NET Health Monitoring实际上可以立即完成相当不错的工作!
MSDN, How to: Send E-mail for Health Monitoring Notifications
答案 4 :(得分:0)
Enterprise Library可能有一个学习曲线但是一个很好的项目。
在Asp.Net中关注david hayden的文章Enterprise Library 2.0 Logging Application Block
答案 5 :(得分:-2)
就个人而言,我还没有尝试过log4net,但是看到了winforms的规范和示例,但我的组织编写了我们自己的日志记录机制,报告和记录global.asax中捕获的错误,报告了我们需要了解的关于堆栈跟踪的所有信息,会话(如果存在),表单的NVC,应用程序的版本,使用查询字符串发起错误的URL以及HTTP标头。虽然我注意到并非所有错误都记录在那里;例如表单身份验证过期或应用程序池重新启动/关闭或IIS报告的任何未被执行的应用程序抛出的任何内容。