分享方式:


工作流程追蹤

工作流程追蹤提供使用 .NET Framework 追蹤接聽程序來擷取診斷資訊的方式。 如果偵測到應用程式發生問題,然後在問題解決后再次停用,則可以啟用追蹤。 有兩種方式可以啟用工作流程的偵錯追蹤。 您可以使用事件追蹤查看器進行設定,或使用 System.Diagnostics 將追蹤事件傳送至檔案。

在 ETW 中啟用偵錯追蹤

若要使用 ETW 啟用追蹤,請在事件檢視器中啟用偵錯通道:

  1. 流覽至事件查看器中的分析和偵錯記錄節點。

  2. 在 [事件查看器] 的樹視圖中,瀏覽至 [事件查看器->應用程式及服務記錄]->Microsoft-Windows->Application Server->Applications。 以滑鼠右鍵按兩下 [應用程式伺服器應用程式 ],然後選取 [檢視顯示>分析和偵錯記錄]。 以滑鼠右鍵按兩下 [ 偵錯] ,然後選取 [ 啟用記錄]。

  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>  

另請參閱