工作流跟踪

工作流跟踪提供了使用 .NET Framework 跟踪侦听器捕获诊断信息的方法。 如果检测到应用程序出现问题,可以启用跟踪功能,并在问题解决后禁用跟踪。 可通过两种方式为工作流启用调试跟踪。 可以使用事件跟踪查看器进行配置,也可以使用 System.Diagnostics 来将跟踪事件发送到文件。

在 ETW 中启用调试跟踪

若要使用 ETW 启用跟踪,请启用事件查看器中的调试通道:

  1. 导航到事件查看器中的分析和调试日志节点。

  2. 在事件查看器的树视图中,导航到事件查看器->应用程序和服务日志->Microsoft->Windows->应用服务器-应用程序。 右键单击 “应用程序服务器-应用程序 ”,然后选择“ 查看->显示分析和调试日志”。 右键单击“ 调试 ”并选择“ 启用日志”。

  3. 当工作流运行调试并将跟踪发送到 ETW 调试通道时,可以在事件查看器中查看它们。 导航到事件查看器->应用程序和服务日志->Microsoft->Windows->Application Server-Applications。 右击“调试”,并选择“刷新”。

  4. 默认分析跟踪缓冲区大小仅为 4 KB;建议将大小增加到 32 KB。 为此,请执行以下步骤。

    1. 在当前框架目录中执行以下命令(例如 C:\Windows\Microsoft.NET\Framework\v4.0.21203): wevtutil um Microsoft.Windows.ApplicationServer.Applications.man

    2. 将 Windows.ApplicationServer.Applications.man 文件中的 <bufferSize> 值更改为 32。

      <channel name="Microsoft-Windows-Application Server-Applications/Analytic" chid="ANALYTIC_CHANNEL" symbol="ANALYTIC_CHANNEL" type="Analytic" enabled="false" isolation="Application" message="$(string.MICROSOFT_WINDOWS_APPLICATIONSERVER_APPLICATIONS.channel.ANALYTIC_CHANNEL.message)" >  
                  <publishing>  
                    <bufferSize>32</bufferSize>  
                  </publishing>  
                </channel>  
      
    3. 在当前框架目录中执行以下命令(例如 C:\Windows\Microsoft.NET\Framework\v4.0.21203): wevtutil im Microsoft.Windows.ApplicationServer.Applications.man

注释

如果使用的是 .NET Framework 4 客户端配置文件,则必须先通过从 .NET Framework 4 目录运行以下命令来注册 ETW 清单:ServiceModelReg.exe –i –c:etw

使用 System.Diagnostics 启用调试跟踪

可以在工作流应用程序的 App.config 文件中或工作流服务的 Web.config 中配置这些侦听器。 在本例中,TextWriterTraceListener 配置为在当前目录的 MyTraceLog.txt 文件中保存跟踪信息。

<configuration>  
  <system.diagnostics>  
    <sources>  
      <source name="System.Activities" switchValue="Information">  
        <listeners>  
          <add name="textListener" />  
          <remove name="Default" />  
        </listeners>  
      </source>  
    </sources>  
    <sharedListeners>  
      <add name="textListener"  
           type="System.Diagnostics.TextWriterTraceListener"  
           initializeData="MyTraceLog.txt"  
           traceOutputOptions="ProcessId, DateTime" />  
    </sharedListeners>  
    <trace autoflush="true" indentsize="4">  
      <listeners>  
        <add name="textListener" />  
      </listeners>  
    </trace>  
  </system.diagnostics>  
</configuration>  

另请参阅