循环跟踪

CircularTracing 示例演示循环缓冲区跟踪侦听器的实现。 生产服务的一个常见方案是,拥有可以长时间使用的服务,并在较低级别启用跟踪日志记录。 这些服务占用大量磁盘空间。 对服务进行故障排除时,跟踪日志中的最新数据与解决问题相关。 此示例演示了循环缓冲区跟踪侦听器的实现,在该侦听器中,只有最新的跟踪保留在磁盘上,最多可以配置的数据量。 此示例基于入门并且包含一个自定义跟踪侦听器。

注释

本示例的设置过程和生成说明位于本主题末尾。

此示例假定你熟悉 跟踪和消息日志记录 示例,并已阅读为 跟踪和消息日志记录 示例提供的文档。

循环缓冲区跟踪侦听器

循环缓冲区跟踪侦听器实现背后的概念是有两个文件,每个文件最多可存储所需跟踪日志数据的一半。 侦听器会创建一个文件并向其中写入数据,直到写入的数据量达到总数据大小的一半,然后再切换到第二个文件。 当侦听器达到第二个文件的限制时,它会用新的追踪记录覆盖第一个文件。

此侦听器派生自XmlWriteTraceListener,并允许使用服务跟踪查看器工具(SvcTraceViewer.exe)查看日志。 尝试查看日志时,可以通过在服务跟踪查看器工具中同时打开这两个日志文件来轻松重新组合这两个日志文件。 服务跟踪查看器工具会自动处理跟踪的排序,使其按正确的顺序显示。

配置

可以通过为侦听器和源元素添加以下代码,将服务配置为使用循环缓冲区跟踪侦听器。 通过在循环跟踪侦听器的配置中设置 maxFileSizeKB 属性来指定最大文件大小。 以下代码对此进行了演示。

<system.diagnostics>
  <sources>
    <source name="System.ServiceModel" switchValue="Information,ActivityTracing" propagateActivity="true">
      <listeners>
        <add name="CircularTraceListener" />
      </listeners>
    </source>
  </sources>
  <sharedListeners>
    <add name="CircularTraceListener" type="Microsoft. Samples.ServiceModel.CircularTraceListener,CircularTraceListener"
         initializeData="c:\logs\CircularTracing-service.svclog" maxFileSizeKB="100" />
  </sharedListeners>
  <trace autoflush="true" />
</system.diagnostics>

设置、生成和运行示例

  1. 请确保您已经为 Windows Communication Foundation 示例执行了 One-Time 设置程序

  2. 若要生成解决方案的 C# 或 Visual Basic .NET 版本,请按照 生成 Windows Communication Foundation 示例中的说明进行操作。

  3. 要使用单机配置或跨计算机配置运行示例,请按照运行 Windows Communication Foundation 示例中的说明进行操作。

另请参阅