逐步解說:變更 My.Application.Log 寫入資訊的位置 (Visual Basic)
您可以使用 My.Application.Log
和 My.Log
物件來記錄應用程式中發生之事件的相關資訊。 本逐步解說示範如何覆寫預設設定,而且使 Log
物件寫入至其他記錄檔接聽程式。
必要條件
Log
物件可以將資訊寫入數個記錄檔接聽程式。 在變更設定前,您需要判斷目前的記錄檔接聽程式設定。 如需詳細資訊,請參閱逐步解說:判斷 My.Application.Log 寫入資訊的位置。
您也可以檢閱如何:將事件資訊寫入至文字檔,或如何:寫入應用程式事件記錄檔。
加入接聽程式
在 方案總管 中,以滑鼠右鍵按一下 app.config 並選擇 [開啟] 。
- 或 -
如果沒有 app.config 檔案︰
在 [ 專案 ] 功能表中,選擇 [ 加入新項目]。
在 [加入新項目] 對話方塊中,選取 [應用程式組態檔] 。
按一下新增。
找出
<listeners>
區段,其位於<source>
區段中具有name
屬性 "DefaultSource" 的<sources>
區段下。<sources>
區段位於最上層<system.diagnostics>
區段中的<configuration>
區段。將這些項目加入至該
<listeners>
區段。<!-- Uncomment to connect the application file log. --> <!-- <add name="FileLog" /> --> <!-- Uncomment to connect the event log. --> <!-- <add name="EventLog" /> --> <!-- Uncomment to connect the event log. --> <!-- <add name="Delimited" /> --> <!-- Uncomment to connect the XML log. --> <!-- <add name="XmlWriter" /> --> <!-- Uncomment to connect the console log. --> <!-- <add name="Console" /> -->
取消註解您想要收到
Log
訊息的記錄檔接聽程式。找出位於最上層
<sharedListeners>
區段中<system.diagnostics>
區段的<configuration>
區段。將這些項目加入至該
<sharedListeners>
區段。<add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" initializeData="FileLogWriter" /> <add name="EventLog" type="System.Diagnostics.EventLogTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="sample application"/> <add name="Delimited" type="System.Diagnostics.DelimitedListTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="c:\temp\sampleDelimitedFile.txt" traceOutputOptions="DateTime" /> <add name="XmlWriter" type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="c:\temp\sampleLogFile.xml" /> <add name="Console" type="System.Diagnostics.ConsoleTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="true" />
App.config 檔案的內容應該類似下列 XML:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.diagnostics> <sources> <!-- This section configures My.Application.Log --> <source name="DefaultSource" switchName="DefaultSwitch"> <listeners> <add name="FileLog"/> <!-- Uncomment to connect the application file log. --> <!-- <add name="FileLog" /> --> <!-- Uncomment to connect the event log. --> <!-- <add name="EventLog" /> --> <!-- Uncomment to connect the event log. --> <!-- <add name="Delimited" /> --> <!-- Uncomment to connect the XML log. --> <!-- <add name="XmlWriter" /> --> <!-- Uncomment to connect the console log. --> <!-- <add name="Console" /> --> </listeners> </source> </sources> <switches> <add name="DefaultSwitch" value="Information" /> </switches> <sharedListeners> <add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" initializeData="FileLogWriter" /> <add name="EventLog" type="System.Diagnostics.EventLogTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="sample application"/> <add name="Delimited" type="System.Diagnostics.DelimitedListTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="c:\temp\sampleDelimitedFile.txt" traceOutputOptions="DateTime" /> <add name="XmlWriter" type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="c:\temp\sampleLogFile.xml" /> <add name="Console" type="System.Diagnostics.ConsoleTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="true" /> </sharedListeners> </system.diagnostics> </configuration>
重新設定接聽程式
從
<add>
區段找出接聽程式的<sharedListeners>
項目。type
屬性提供接聽程式類型的名稱。 此類型必須繼承自 TraceListener 類別。 使用以強式名稱方式命名的類型名稱來確定使用了正確的類型。 如需詳細資訊,請參閱下列<參考強制命名的類型>一節。您可以使用的類型如下︰
寫入至檔案記錄檔的 Microsoft.VisualBasic.Logging.FileLogTraceListener 接聽程式。
將資訊寫入至由 System.Diagnostics.EventLogTraceListener 參數指定之電腦事件記錄檔的
initializeData
接聽程式。寫入至由 System.Diagnostics.DelimitedListTraceListener 參數中指定之檔案的 System.Diagnostics.XmlWriterTraceListener 和
initializeData
接聽程式。寫入至命令列主控台的 System.Diagnostics.ConsoleTraceListener 接聽程式。
如需其他記錄檔接聽程式類型在何處寫入資訊的相關資訊,請查閱該類型的文件。
當應用程式建立記錄檔接聽程式物件時,會傳遞
initializeData
屬性作為建構函式參數。initializeData
屬性的意義取決於追蹤接聽項。建立記錄檔接聽程式之後,應用程式會設定接聽程式的屬性。 這些屬性由
<add>
項目中的其他屬性定義。 如需特定接聽程式屬性的詳細資訊,請參閱該接聽程式類型的文件。
參考強式命名的類型
若要確保記錄檔接聽程式使用正確的類型,請務必使用完整類型名稱和強式命名的組件名稱。 強式命名的類型語法如下所示︰
<類型名稱>, <組件名稱>, <版本號碼>, <文化特性 (Culture)>, <強式名稱>
這個程式碼範例示範在此情況下如何判斷完整類型 "System.Diagnostics.FileLogTraceListener" 之強式命名的類型。
Public Sub DisplayStrongName() Dim t As Type = GetType(Logging.FileLogTraceListener) MsgBox(t.FullName & ", " & t.Assembly.FullName) End Sub
這就是輸出的資料,並可用於唯一參考強式命名的類型,如上方「加入接聽程式」 程序所示。
Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a