【问题标题】:ETW consuming past eventETW 消费过去的事件
【发布时间】:2015-08-21 08:16:33
【问题描述】:

我打算使用 ETW,因为它:

  • 强制构建日志记录
  • 低延迟
  • 在另一个进程上消费事件的能力

这个想法是使用外部进程(如语义日志应用程序块)来使用 ETW 事件,并将这些事件转发到中心位置。

我的问题是。如果在应用程序继续向 ETW 发送事件时,ETW 消费者因任何原因出现故障,是否有任何方法可以使用过去的事件?

【问题讨论】:

    标签: c# logging etw


    【解决方案1】:

    当您的自定义 Recorder 关闭时,不会记录任何事件。 ETW 不会存储任何内容,除非您的 ProviderRecorder 之间有一个 Session

    我可以为您提供的解决方案是使用WPR 和您的自定义Recorder。 将跟踪保存到文件中...但请记住ETW 可以在 1 秒内引发 20K 事件(您将收到 BCL 事件...)...(保持文件小,并快速从故障中恢复。 ..)

    编辑

    this article:

    如果服务器本身在应用程序写入日志消息和进程外主机保存消息之间发生故障,或者如果进程宿主应用程序在保留消息之前崩溃。

    所以正如我所说,使用 2 个应用程序可能会有所帮助...

    【讨论】:

      【解决方案2】:

      实际上,您可以尝试使用离线 ETW 会话。它将二进制跟踪存储到磁盘中的文件中,然后您的消费者可以从该文件中获取数据。

      如果您的消费者出现故障,提供者可以继续生成跟踪。

      【讨论】:

        猜你喜欢
        • 2020-07-26
        • 1970-01-01
        • 2022-12-11
        • 1970-01-01
        • 2013-11-01
        • 2018-05-07
        • 2019-02-25
        • 2013-12-10
        • 1970-01-01
        相关资源
        最近更新 更多