gpt4 book ai didi

c# - TraceSource.TraceTransfer 与 TraceSource.TraceEvent(TraceEventType.Transfer

转载 作者:太空宇宙 更新时间:2023-11-03 11:47:33 25 4
gpt4 key购买 nike

当使用 System.Diagnostics TraceSource 进行日志记录/跟踪时,使用 TraceSource.TraceTransfer 和 TraceSource.TraceEvent(TraceEventType.Transfer, ... 之间有区别吗?

在我们的环境中,我们将开发许多通过 WCF 进行通信的服务。我们还在评估应该使用什么平台进行日志记录/跟踪。我们倾向于使用 System.Diagnostics,至少部分是因为能够使用 CorrelationManager、ActivityID、TraceTransfer 等在服务之间关联日志。

我可以在 TraceSource 的文档中看到它有一个 TraceTransfer 方法以及一个可以将 TraceEventType.Transfer 作为事件类型的 TraceEvent。你什么时候使用一个与另一个?我见过像 here 这样的例子显示如何使用开始/停止以及如何管理 ActivityID 和 CorrelationManager,但我很少看到有人使用 TraceSource.TraceEvent(TraceEventType.Transfer, ...)。有一个例子 here显示使用 TraceEventType.Transfer(以及显式调用 TraceTransfer)。

至此,也许我真的开始回答我自己的问题了......

似乎 TraceSource.TraceTransfer 明确地对作为参数传递的 ActivityID 做了一些事情,而调用 TraceSource.TraceEvent(TraceEventType.Transfer, ...) 没有明确地对 ActivityID 做任何事情(因为它没有被传递作为参数)。它似乎真的只是在记录另一个事件,恰好是一个传输事件,但不会对 CorrelationManager 或其他任何事情做任何其他事情。

感谢您的帮助。

最佳答案

根据MSDN documentation for TraceSource.TraceTransfer , TraceSource.TraceTransfer 调用TraceListener.TraceTransfer。 TraceListener.TraceTransfer 的基本实现只是调用 TraceListener.TraceEvent(TraceEventType.Transer, ...),将 guid 的字符串表示传递给 TraceSource.TraceTransfer。

因此,在我看来,TraceSource.TraceTransfer 提供了明确指示正在发生事件传输的方法。在调用站点,使用 TraceSource.TraceTransfer 更加明显且类型安全。如果实现 TraceListener,您可以利用显式 TraceTransfer 调用以及事件 ID 作为 Guid 传入的事实来执行您在传输事件 ID 时想要执行的任何特殊工作。

关于c# - TraceSource.TraceTransfer 与 TraceSource.TraceEvent(TraceEventType.Transfer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3024386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com