我的某些网站在生产环境中效果不佳,有时会崩溃,有时甚至是异常。 由于这些网站真的很旧,其中一些网站没有足够的日志来排除故障。 我知道我可以逐个添加代码以获得足够的日志,但这是巨大的工作量并可能影响现有的逻辑。
所以我想做的是: 不修改任何现有产品代码, 我们可以在运行时将代码附加或注入网站进程,然后我可以执行一些代码来记录异常,http请求和http响应。 我的环境是Asp.net 4.0+和IIS7 +
如果我可以在产品流程中执行我的代码,那么在没有修改产品代码的情况下更容易记录,代码将会是这样的:
AppDomain.CurrentDomain.FirstChanceException += (sender, e) =>
{
///write log...
};
unhandle例外是其中一个案例,我还有其他一些案例,我想申请所有制作,例如:
有几个技术点我现在找不到解决方案......
答案 0 :(得分:1)
如果它是一个Web应用程序并且您正在处理未处理的异常,则可以将记录添加到global.asax;它可能会或可能没有帮助,但似乎它会比你到目前为止提供更多的洞察力。
现在,从技术上讲,人们可以争辩说修改global.asax正在修改生产代码,但我提出你的问题意味着你不想去修改生产代码中的数百个地方等。
答案 1 :(得分:1)
最简单的方法是将模块的错误记录添加到IIS。
例如,请参阅SharpBrake,其中有一个名为NotifierHttpModule的IIS模块,它可以自动捕获网站引发的所有异常,而无需修改网站的代码。 (您唯一需要做的就是在web.config
文件中包含模块初始化。)您可以根据SharpBrake自己编写一些内容,或者....
事实上,对于您正在做的事情,您可以考虑使用AirBrake.io或其免费的开源克隆ErrBit等服务来进行日志记录,然后您可以使用SharpBrake来执行错误捕捉。