C#跟蹤

來源:互聯網
上載者:User

標籤:技術   應用程式   記錄   設定檔   error   

一、為什麼需要用到跟蹤技術:

        利用跟蹤功能可以從正在啟動並執行應用程式(發布後的程式)中查看訊息。我們把定義訊息(不同層級的訊息)的代碼寫在應用程式中,根據設定檔中配置,從而寫入不同層級的訊息。這些訊息會寫入到哪呢?vs預設是寫入到輸出視窗上的。輸出視窗只能在調試狀態下看的見。當我們跟蹤發布後的程式那怎麼辦呢?我們需要在設定檔中定義一個接聽程式,來接受從應用程式中寫入的訊息。下面來具體的介紹跟蹤

 

二、跟蹤體系架構:

①,跟蹤源:跟蹤資訊的源頭。例如:需要跟蹤程式集或跟蹤某個命名空間某個類

②,開關:開關定義了要記錄的資訊層級。例如:可以請求錯誤資訊或詳細詳細

③,接聽程式:定義了寫入跟蹤訊息的位置。

④,篩選器:篩選要記錄的資訊層級。例如:開關定義了Information層級,可以用過篩選只記錄Error資訊層級

 

需要引用命名空間:using System.Diagnostics;

 

 

三、參數對照表

 

  幾種接聽程式類型
接聽程式 描述
System.Diagnostics.XmlWriterTraceListener 寫入Xml檔案
System.Diagnostics.TextWriterTraceListener 寫入文本
System.Diagnostics.DelimitedListTraceListener 寫入帶有分隔字元的文本,設定檔屬性( delimiter=":")設定分隔字元號
System.Diagnostics.EventLogTraceListener 寫入事件記錄
WebPageTraceListener 寫入web追蹤檔案trace.axd中

 

TraceEventType跟蹤事件類型(<filter type="System.Diagnostics.EventTypeFilter" initializeData="Error"/> ) 
事件 描述
Critical 定義了致命錯誤或應用程式崩潰
Error 表示可恢複的錯誤
Information 資訊性訊息
Verbose 調試跟蹤
Warning 非關鍵性問題(警告)
Transfer 相關標識的更改
Start 邏輯操作的開始
Stop 邏輯操作的停止
Suspand 邏輯操作的掛起
Resume 邏輯操作的恢複

 

 

 SourceLevels開關層級(<add name="myTraceInfo" value="Off"/>
層級 描述
ActivityTracing 允許 Stop、Start、Suspend、Transfer 和 Resume 事件通過。
All 允許所有事件通過。
Critical 只允許 Critical 事件通過。
Error 允許 Critical 和 Error 事件通過。
Information 允許 Critical、Error、Warning 和 Information 事件通過。
Off 不允許任何事件通過。
Verbose 允許 Critical、Error、Warning、Information 和 Verbose 事件通過。
Warning 允許 Critical、Error 和 Warning 事件通過。

 

 

  TraceOptions制定要寫入跟蹤輸出中的跟蹤資料選項(接聽程式的traceOutputOptions屬性
參數 描述
Callstack 寫入呼叫堆疊
DateTime 寫入日期和時間
LogicalOperationStack 寫入邏輯操作堆棧
None 不寫入如何操作
ProcessId 寫入進程標識
ThreadId 寫入線程標識
Timestamp 寫入時間戳記

 

 四、配置追蹤檔案:

<?xml version="1.0" encoding="utf-8" ?><configuration>    <startup>         <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />    </startup>   <system.diagnostics>    <!--   ====定義源===    -->    <sources><!--   跟蹤源                   開關名稱                       開關類型      -->      <source name="TraceDome4" switchName="myTraceDome4" switchType ="System.Diagnostics.SourceSwitch">        <listeners>          <add name="XmlTraceListener"></add><!--引用接聽程式-->          <add name="DelimitedTraceListener">            <!--(源篩選)只顯示TraceInfo程式集的跟蹤-->            <!--<filter type="System.Diagnostics.SourceFilter" initializeData="TraceInfo"/>-->            <!--(跟蹤事件類型篩選)唯寫入事件類型為Error的資訊-->            <!--<filter type="System.Diagnostics.EventTypeFilter" initializeData="Error"/>-->          </add>        </listeners>      </source>    </sources>    <!--   =============    -->    <!--   ====接聽程式===    -->    <sharedListeners><!--                     接聽程式類型                                        輸出中的跟蹤資料選項                              輸出位置-->      <add name="XmlTraceListener" type="System.Diagnostics.XmlWriterTraceListener" traceOutputOptions="Callstack,LogicalOperationStack" initializeData="myTraceDome4.xml"></add>      <add name="DelimitedTraceListener" type="System.Diagnostics.DelimitedListTraceListener"  delimiter=":" traceOutputOptions="DateTime" initializeData="DelimitedTraceListener.txt"></add>    </sharedListeners>    <!--   =============    -->            <!--   ====開關===    -->    <switches><!-- 開關名稱        開關層級  -->      <add name="myTraceDome4" value="All"/>    </switches>    <!--   =============    -->    <!--在這個問題上一直搞了很長一段時間,原來是這個沒有配置。如果不配置這個,就不會寫入檔案-->    <!--自動重新整理(必須)-->    <trace autoflush="true" />          </system.diagnostics>  </configuration>

 

五、在應用程式中寫入訊息代碼

 

 

本文出自 “程式猿的家--Hunter” 部落格,請務必保留此出處http://962410314.blog.51cto.com/7563109/1599988

C#跟蹤

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.