我的一些网站在生产环境中运行不佳,有时崩溃,有时异常。由于这些网站真的很老,其中一些没有足够的日志来进行故障排除。我知道我可以一一添加代码以获得足够的日志,但这是巨大的工作量并且可能会影响现有的逻辑。
所以我想做的是: 在不修改任何现有产品代码的情况下,我们可以在运行时将代码附加或注入到网站进程中,然后我可以执行一些代码来记录异常、http 请求和 http 响应。我的环境是 Asp.net 4.0+ 和 IIS7+
如果我可以在产品过程中执行我的代码,那么在不修改产品代码的情况下登录会容易得多,代码将如下所示:
AppDomain.CurrentDomain.FirstChanceException += (sender, e) =>
{
///write log...
};
unhandle exception 就是其中一种情况,我还有其他几种情况要应用于所有生产,例如:
- 记录所有请求和响应(我可以随时从远程管理系统启用日志和禁用登录)
- 记录未处理异常
- 日志吞入异常
- 得到一个转储
- 监控应用程序,一旦达到条件(例如异常计数、超时、内存使用)触发一些操作
- 当异常或意外返回值时打印所有堆栈(带有函数引用的参数和局部值)
有几个技术点我现在找不到解决方案...