使用 System.Diagnostics TraceSource 进行日志记录/跟踪时,使用 TraceSource.TraceTransfer 和 TraceSource.TraceEvent(TraceEventType.Transfer, ... 是否有区别?
在我们的环境中,我们将开发许多将通过 WCF 进行通信的服务。我们还在评估我们应该使用什么平台来记录/跟踪。我们倾向于使用 System.Diagnostics,至少部分是因为能够使用 CorrelationManager、ActivityID、TraceTransfer 等关联服务之间的日志。
我可以在 TraceSource 的文档中看到它有一个 TraceTransfer 方法以及一个可以将 TraceEventType.Transfer 作为事件类型的 TraceEvent。你什么时候使用一个与另一个?我见过像这里这样的例子,它们展示了如何使用 Start/Stop 以及如何管理 ActivityID 和 CorrelationManager,但我很少看到有人使用 TraceSource.TraceEvent(TraceEventType.Transfer, ... )。这里有一个示例显示使用 TraceEventType.Transfer(以及显式调用 TraceTransfer)。
至此,也许我实际上已经开始回答我自己的问题了……
似乎 TraceSource.TraceTransfer 正在使用作为参数传递的 ActivityID 显式执行某些操作,而调用 TraceSource.TraceEvent(TraceEventType.Transfer, ...) 并没有显式对 ActivityID 执行任何操作(因为它没有作为参数传递)。看起来它实际上只是在记录另一个事件,恰好是一个传输事件,但没有对 CorrelationManager 或其他任何东西做任何其他事情。
谢谢你的帮助。