我刚刚开始开发一个brownfield ASP.NET 2.0Web应用程序。与许多brownfield应用程序一样,该体系结构,特别是异常日志体系结构,在某些地方是不一致的,并且在某些地方丢失或不正确(吞并异常、重新抛出、将它们用于控制逻辑等)。
作为控制这一切的起点,我只想做一个毯子捕捉应用程序中抛出的所有异常,并像DB表一样将其记录到某个地方。不幸的是,要将代码解释到应用程序中需要花费很多天甚至几个星期的时间,这样就排除了手工编码的可能性。将logger.log(例如)放在任何地方,以及log4net和nlog之类的东西。我在寻找另一种更轻的解决问题的方法。
在这里快速阅读之后,我遇到了各种各样的技巧,比如:
人们对这些解决方案的经验是什么?请记住,我希望尽可能简单、无痛苦地实现这一点,因此在这个阶段不需要任何提示。我所需要的就是将每一个异常报告到单个位置,这样我就可以开始在逻辑中查找漏洞。
编辑:
我可能应该清楚地表明,我想记录*所有*异常(即使是那些被处理的异常,因为有些异常被错误地处理)。可以配置Elmah来完成这个任务吗?如果没有,我的其他选择是什么?
发布于 2009-07-14 18:57:03
我完全推荐elmah插件到您的应用程序中。找出问题出在哪里,真是让人大开眼界。我的应用程序中有几个未报告的超时,例如,我已经识别并修复了这些超时。
简单无痛。除了对web.config的一些额外行之外,它不涉及对代码的任何更改。您可以添加它并在10分钟内查看异常。
发布于 2009-07-14 18:52:11
不要加任何渔获物。启用ASP.NET健康监测。如果愿意,可以将其配置为登录到数据库。
除此之外,我还要使用企业图书馆,特别是异常应用程序块和日志应用程序块。可以在任何地方应用日志记录(可以在生产中将其配置为off ),但只能在层边界捕获异常--比如在公共DAL方法中。
企业库的好处之一是,如果您对此感兴趣,那么操作设计项目就能很好地发挥它的作用:
项目的重点是开发工具和指导,以帮助开发Windows平台上高度可管理的应用程序。 这个项目已经创建了两个可交付的项目。首先是Visual Studio Team System Management Model Designer Power Tool (TSMMD)。TSMMD是一种用于对业务健康场景和相关工具进行建模的工具。该工具包括生成平台插装的指导包(称为The )和验证器,以确认应用程序源代码包含在Health中定义的工具。然后,可以使用该工具为2007生成管理包。最后是“管理指南”,其中包含关于在Microsoft平台上构建高度可管理的应用程序的说明性指导。
发布于 2009-07-14 18:55:35
考虑使用面向方面的框架将日志代码注入源代码预编译时间。日志记录是AOP的教科书应用程序,所以大多数包应该能够处理您的需求。
这是一个很好的AOP库列表。http://www.bodden.de/tools/aop-dot-net/
大约4年前,我在.NET上玩过AOP,从那时起,这些库似乎已经成熟了很多。
https://stackoverflow.com/questions/1127269
复制相似问题