c# - 更完整的错误日志

标签 c# .net error-handling

当我记录错误时,通常会包括堆栈跟踪。这很好,但通常很难分辨出错误的实际位置。

是否可以设置一个例程,该例程可能在发生错误时通过反射来收集参数,局部变量等?

最佳答案

如果没有VS2010,则可以使用PostSharp编织代码以在调用函数时收集参数。但是,它将减慢代码速度,因此仅对调试有用。

编辑:(从我刚发表的评论中促进)

如果要在生产中使用此功能,则可以限制PostSharp编织的范围,使其仅在某些类/命名空间/程序集(甚至是函数)上运行,或者可以限制执行建议时的操作。我尝试过但没有完全遵循的一件事是,使advice方法仅将堆栈帧信息记录在环形缓冲区中。发生异常时,记录器可以从环形缓冲区中获取堆栈帧信息并生成合适的日志消息。否则,帧信息将在环形缓冲区填满时被覆盖。您甚至可以只使用堆栈而不是环形缓冲区,并随调用堆栈的增长和收缩而使该堆栈增长和收缩,记录帧信息。注意:您将无法从PostSharp无法修改的框架代码或第三方代码中获取框架信息。

关于c# - 更完整的错误日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3525829/

相关文章:

c# - 简单的 LINQ to SQL 嵌套选择

c# - 如何通过 HttpWebRequest 传递 API_KEY

c# - 用于动态小数位数的 MVC ValidationMessage

c# - 无法启动服务。服务进程无法连接到服务 Controller

r - 不确定是什么导致R中的此错误(pmvt-软件包: mvtnorm)?

C#:如何检索文件夹的描述?

c# - 已导入具有相同标识 'XXX' 的程序集。尝试删除重复引用之一

c# - WinForms UI 在用户控件中时加载速度要慢得多

c++ - 在 C++ 中定义一个类

c# - 属性中的错误处理,我知道它不好,但需要修复