逐步解說:建立自訂的記錄檔接聽程式 (Visual Basic)
這個逐步解說會示範如何建立自訂的記錄檔接聽程式,並將它設定為接聽 My.Application.Log 物件的輸出。
使用者入門
記錄檔接聽程式必須繼承自 TraceListener 類別。
若要建立接聽程式
在應用程式中建立名為 SimpleListener 的類別,並使它繼承自 TraceListener。
Public Class SimpleListener Inherits System.Diagnostics.TraceListener <Security.Permissions.HostProtection(Synchronization:=True)> Public Overloads Overrides Sub Write(ByVal message As String) MsgBox("Write: " & message) End Sub <Security.Permissions.HostProtection(Synchronization:=True)> Public Overloads Overrides Sub WriteLine(ByVal message As String) MsgBox("WriteLine: " & message) End Sub End Class
基底類別所需的 Write 和 WriteLine 方法會呼叫 MsgBox 顯示輸入。
HostProtectionAttribute 屬性 (Attribute) 則會套用到 Write 和 WriteLine 方法,使這些方法的屬性符合基底類別方法。 HostProtectionAttribute 屬性可以讓執行程式碼的主應用程式判斷該程式碼是否公開 (Expose) 主應用程式同步處理防護。
注意事項 HostProtectionAttribute 屬性只有在裝載 Common Language Runtime 以及實作主應用程式防護的 Unmanaged 應用程式 (例如 SQL Server) 上才會生效。
若要確保 My.Application.Log 會使用您的記錄檔接聽程式,您應該以強式名稱來命名記錄檔接聽程式所在的組件。
下面這個程序提供一些簡單的步驟,建立具有強式名稱的記錄檔接聽程式組件。 如需詳細資訊,請參閱建立和使用強式名稱的組件。
若要以強式名稱命名記錄檔接聽程式組件
在 [方案總管] 中選取專案。 在 [專案] 功能表上,選擇 [屬性]。 如需詳細資訊,請參閱專案設計工具簡介。
按一下 [簽署] 索引標籤。
選取 [簽署組件] 方塊。
從 [選擇強式名稱金鑰檔] 下拉式清單中,選擇 [<新增>]。
[建立強式名稱金鑰] 對話方塊隨即開啟。
在 [金鑰檔名稱] 方塊中提供金鑰檔的名稱。
在 [輸入密碼] 和 [確認密碼] 方塊中輸入密碼。
按一下 [確定]。
重建應用程式。
加入接聽程式
使組件具有強式名稱後,現在您需要判斷接聽程式的強式名稱,讓 My.Application.Log 使用您的記錄檔接聽程式。
具有強式名稱之型別的格式如下:
<型別名稱>, <組件名稱>, <版本號碼>, <文化特性>, <強式名稱>
若要判斷接聽程式的強式名稱
下列程式碼會顯示如何判斷 SimpleListener 的強式名稱型別名稱。
Public Sub DisplaySimpleListenerStrongName() Dim t As Type = GetType(SimpleListener) MsgBox(t.FullName & ", " & t.Assembly.FullName) End Sub
型別的強式名稱視專案而定。
透過強式名稱,您可以將接聽程式加入至 My.Application.Log 記錄檔接聽程式集合。
若要將接聽程式加入至 My.Application.Log
以滑鼠右鍵按一下 [方案總管] 的 [app.config],並選擇 [開啟]。
-或-
如果沒有 app.config 檔:
在 [專案] 功能表中,選擇 [加入新項目]。
從 [加入新項目] 對話方塊中選擇 [應用程式組態檔]。
按一下 [加入]。
在具有 name 屬性為 "DefaultSource" 的 <source> 區段 (此區段位於 <sources> 區段) 中,尋找 <listeners>。 <sources> 區段是在最上層 <configuration> 區段的 <system.diagnostics> 區段中。
將這個項目加入至 <listeners> 區段:
<add name="SimpleLog" />
在最上層 <configuration> 區段的 <system.diagnostics> 區段中,尋找 <sharedListeners> 區段。
將這個項目加入至此 <sharedListeners> 區段:
<add name="SimpleLog" type="SimpleLogStrongName" />
將 SimpleLogStrongName 的值變更為接聽程式的強式名稱。
請參閱
工作
逐步解說:變更 My.Application.Log 寫入資訊的位置 (Visual Basic)
參考
Microsoft.VisualBasic.Logging.Log