我已经阅读了很多有关跟踪和日志记录的内容,试图为该问题的最佳实践找到一些黄金法则,但是没有任何东西。人们说好的程序员会产生良好的跟踪,但是要这样说,它必须来自经验。
我也在这里和通过互联网阅读了类似的问题,它们并不是我要问的一样,或者我的回答不令人满意,也许是因为这些问题缺乏细节。
因此,人们说,在无法附加调试器的情况下,跟踪应可以复制调试应用程序的经验。它应该提供足够的上下文,以便您可以看到应用程序中每个控制点采用的路径。
更深入地讲,您甚至可以区分跟踪和事件日志记录,因为“事件日志记录与跟踪的不同之处在于它捕获主要状态而不是详细的控制流”。
现在,说我想仅使用标准.NET类(System.Diagnostics
名称空间中的类)进行跟踪和记录。我认为TraceSource类比静态Trace类更适合这项工作,因为我想在跟踪级别之间进行区分,并且使用TraceSource类可以传递用于通知事件类型的参数,而在使用Trace类时我必须使用Trace.WriteLineIf
然后验证类似SourceSwitch.TraceInformation
和的东西SourceSwitch.TraceErrors
,它甚至没有类似TraceVerbose
或的属性TraceStart
。
考虑到所有这些,您是否可以考虑按以下方式进行操作:
- 开始方法时,跟踪“开始”事件,该事件应表示单个逻辑操作或管道,以及传递给方法的参数值的字符串表示。
- 将项目插入数据库时,跟踪“信息”事件。
- 在重要的if / else语句中采用一条路径或另一条路径时,跟踪“信息”事件。
- 在catch块中跟踪“严重”或“错误”,具体取决于它是否是可恢复的错误。
- 完成该方法的执行时,跟踪“停止”事件。
另外,请说明何时最好跟踪“详细”和“警告”事件类型。如果您的示例代码具有良好的跟踪/记录功能并且愿意共享,那将是极好的选择。
注意:我在这里找到了一些很好的信息,但仍然不是我想要的信息:http : //msdn.microsoft.com/zh-cn/magazine/ff714589.aspx