逐步解說:變更 My.Application.Log 寫入資訊的位置 (Visual Basic)
您可以使用 My.Application.Log 和 My.Log 物件,記錄在應用程式中發生的事件資訊。 此逐步解說會顯示如何覆寫預設值,讓 Log 物件寫入至其他的記錄檔接聽程式。
必要條件
Log 物件可以將資訊寫入數個記錄檔接聽程式。 您必須先判斷記錄檔接聽程式目前的設定,再變更設定。 如需詳細資訊,請參閱逐步解說:判斷 My.Application.Log 寫入資訊的位置 (Visual Basic)。
您可能會想要檢閱 如何:將事件資訊寫入至文字檔 (Visual Basic)或 如何:寫入應用程式事件記錄檔 (Visual Basic)。
若要加入接聽程式
以滑鼠右鍵按一下 [方案總管] 的 [app.config],並選擇 [開啟]。
-或-
如果沒有 app.config 檔:
在 [專案] 功能表中,選擇 [加入新項目]。
從 [加入新項目] 對話方塊中選取 [應用程式組態檔]。
按一下 [加入]。
在 <sources> 區段中,具有 name 屬性 "DefaultSource" 的 <source> 區段下,尋找 <listeners> 區段。 <sources> 區段是在最上層 <configuration> 區段的 <system.diagnostics> 區段中。
將這些項目加入至該 <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 訊息的記錄檔接聽程式,取消註解。
在最上層 <configuration> 區段的 <system.diagnostics> 區段中,尋找 <sharedListeners> 區段。
將這些項目加入至該 <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>
若要重新設定接聽程式
從 <sharedListeners> 區段尋找接聽程式的 <add> 項目。
type 屬性會提供接聽程式型別的名稱。 此型別必須繼承自 TraceListener 類別。 請使用具備強式名稱的型別名稱,以確保所使用的型別是正確的。 如需詳細資訊,請參閱下列章節「若要參考具備強式名稱的型別」中的內容。
您可以使用的型別包括:
FileLogTraceListener 接聽程式,可以寫入記錄檔。
EventLogTraceListener 接聽程式,可以將資訊寫入 initializeData 參數所指定的電腦事件記錄檔。
DelimitedListTraceListener 和 XmlWriterTraceListener 接聽程式,可以寫入 initializeData 參數所指定的檔案。
ConsoleTraceListener 接聽程式,可以寫入命令列主控台 (Console)。
如需其他類型的記錄檔接聽程式會將資訊寫入何處的詳細資訊,請查閱該類型的文件。
當應用程式建立記錄檔接聽程式物件時,會傳遞 initializeData 屬性做為建構函式 (Constructor) 參數。 initializeData 屬性的意義,會因追蹤接聽程式而所有不同。
建立記錄檔接聽程式後,應用程式便會設定接聽程式的屬性。 這些屬性 (Property) 是由 <add> 項目中的其他屬性 (Attribute) 所定義。 如需特定接聽程式之屬性的詳細資訊,請參閱該接聽程式型別的相關文件。
若要參考具備強式名稱的型別
若要確保記錄檔接聽程式所使用的型別是正確的,請確定使用完整的型別平稱和具備強式名稱的組件名稱。 具備強式名稱之型別的語法如下:
<型別名稱>, <組件名稱>, <版本號碼>, <文化特性>, <強式名稱>
這個程式碼範例會顯示如何針對完整的型別 (此例中是 "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