2012-03-25 54 views
1

我将处理项目到客户端进行测试阶段,项目使用ASP.NET MVC3构建..我需要的是将所有异常保存到持久位置 - SQL数据库 -在处理C#异常时保存在数据库中的字段

和我有一些问题..

  1. 我应该保存在数据库中的哪些领域? (消息,跟踪等)
  2. 我已经看到人们保存内部异常,但有时我的异常有空内部异常。
  3. 什么是处理错误并保存到数据库的最佳位置。 (在Global.asax中或在web.config中定义自定义错误页,并与server.getLastError获得最后一个错误)

回答

4

我应该保存在数据库中的哪些领域? (味精,跟踪等)

一切你可以,如果可能的话:

  • 类型
  • 消息
  • 堆栈跟踪

我看到有人救内部异常,但有时我的异常有空内部异常。

而且有些会有多个嵌套的。你应该保存你所能做的一切,海事组织。你的结构是怎样取决于你的,但你总是可以添加最内层的那个,然后用最外层的外键来包含最内层的那个,等等,向外发展。

什么是处理错误并保存到数据库的最佳位置。

恐怕不能帮到你。尽管如此,你可能想要考虑这样做,排队它们。当异常本身可能是数据库错误时,这尤其重要 - 如果可以建立一个队列(当然是最大值),以便一旦恢复任何数据库问题,就可以存储错误然后,可能是有用的。或者可能首先将它们转储到磁盘,并定期将该日志上传到数据库。

1
  1. 正如Jon Skeet所说,您存储的字段越多,诊断问题的数量就越多。就个人而言,如果您有能力这样做(数据库空间和性能考虑因素),我会去序列化异常并将其放入“XML”类型列中。这也将消除第二个问题,因为内部异常也会被序列化。尽管采用这种方法,但所有自定义异常都应该能够正确序列化。
  2. 我建议寻找错误记录器的免费源代码,如Elmah以获得基本想法。