当我记录错误时,通常会包括堆栈跟踪。这很好,但通常很难分辨出错误的实际位置。
是否可以设置一个例程,该例程可能在发生错误时通过反射来收集参数,局部变量等?
最佳答案
如果没有VS2010,则可以使用PostSharp编织代码以在调用函数时收集参数。但是,它将减慢代码速度,因此仅对调试有用。
编辑:(从我刚发表的评论中促进)
如果要在生产中使用此功能,则可以限制PostSharp编织的范围,使其仅在某些类/命名空间/程序集(甚至是函数)上运行,或者可以限制执行建议时的操作。我尝试过但没有完全遵循的一件事是,使advice方法仅将堆栈帧信息记录在环形缓冲区中。发生异常时,记录器可以从环形缓冲区中获取堆栈帧信息并生成合适的日志消息。否则,帧信息将在环形缓冲区填满时被覆盖。您甚至可以只使用堆栈而不是环形缓冲区,并随调用堆栈的增长和收缩而使该堆栈增长和收缩,记录帧信息。注意:您将无法从PostSharp无法修改的框架代码或第三方代码中获取框架信息。
关于c# - 更完整的错误日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3525829/