逐步解說:變更 My.Application.Log 寫入資訊的位置 (Visual Basic)

您可以使用 My.Application.Log 和 My.Log 物件,記錄在應用程式中發生的事件資訊。 此逐步解說會顯示如何覆寫預設值,讓 Log 物件寫入至其他的記錄檔接聽程式。

必要條件

Log 物件可以將資訊寫入數個記錄檔接聽程式。 您必須先判斷記錄檔接聽程式目前的設定,再變更設定。 如需詳細資訊,請參閱逐步解說:判斷 My.Application.Log 寫入資訊的位置 (Visual Basic)

您可能會想要檢閱 HOW TO:將事件資訊寫入至文字檔 (Visual Basic)HOW TO:寫入應用程式事件記錄檔 (Visual Basic)

若要加入接聽程式

  1. 以滑鼠右鍵按一下 [方案總管] 的 [app.config],並選擇 [開啟]。

    -或-

    如果沒有 app.config 檔:

    1. 在 [專案] 功能表上,選擇 [加入新項目]。

    2. 從 [加入新項目] 對話方塊中選取 [應用程式組態檔]。

    3. 按一下 [加入]。

  2. 在 <sources> 區段中,具有 name 屬性 "DefaultSource" 的 <source> 區段下,尋找 <listeners> 區段。 <sources> 區段是在最上層 <configuration> 區段的 <system.diagnostics> 區段中。

  3. 將這些項目加入至該 <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" /> -->
    
  4. 為您想接收 Log 訊息的記錄檔接聽程式,取消註解。

  5. 在最上層 <configuration> 區段的 <system.diagnostics> 區段中,尋找 <sharedListeners> 區段。

  6. 將這些項目加入至該 <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" />
    
  7. 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>
    

若要重新設定接聽程式

  1. 從 <sharedListeners> 區段尋找接聽程式的 <add> 項目。

  2. type 屬性會提供接聽程式型別的名稱。 此型別必須繼承自 TraceListener 類別。 請使用具備強式名稱的型別名稱,以確保所使用的型別是正確的。 如需詳細資訊,請參閱下列章節「若要參考具備強式名稱的型別」中的內容。

    您可以使用的型別包括:

    如需其他類型的記錄檔接聽程式會將資訊寫入何處的詳細資訊,請查閱該類型的文件。

  3. 當應用程式建立記錄檔接聽程式物件時,會傳遞 initializeData 屬性做為建構函式 (Constructor) 參數。 initializeData 屬性的意義,會因追蹤接聽程式而所有不同。

  4. 建立記錄檔接聽程式後,應用程式便會設定接聽程式的屬性。 這些屬性 (Property) 是由 <add> 項目中的其他屬性 (Attribute) 所定義。 如需特定接聽程式之屬性的詳細資訊,請參閱該接聽程式型別的相關文件。

若要參考具備強式名稱的型別

  1. 若要確保記錄檔接聽程式所使用的型別是正確的,請確定使用完整的型別平稱和具備強式名稱的組件名稱。 具備強式名稱之型別的語法如下:

    <型別名稱>, <組件名稱>, <版本號碼>, <文化特性>, <強式名稱>

  2. 這個程式碼範例會顯示如何針對完整的型別 (此例中是 "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

請參閱

工作

HOW TO:將事件資訊寫入至文字檔 (Visual Basic)

HOW TO:寫入應用程式事件記錄檔 (Visual Basic)

參考

Microsoft.VisualBasic.Logging.Log

TraceListener

Microsoft.VisualBasic.Logging.FileLogTraceListener

System.Diagnostics.EventLogTraceListener