共用方式為


在 Visual Basic 中使用應用程式日誌

My.Application.LogMy.Log 物件可讓您輕鬆地將記錄和追蹤資訊寫入記錄。

記錄訊息的方式

首先,會使用日誌的 Switch 屬性的 TraceSource 屬性來檢查訊息的嚴重性。 預設情況下,僅會將嚴重性「資訊」及更高級別的訊息傳遞至在記錄TraceListener集合中指定的追蹤接收器。 然後,每個接聽程式都會比較訊息的嚴重性與接聽程序的 Switch 屬性。 如果訊息的嚴重性夠高,接聽程式會寫出訊息。

下圖顯示寫入 WriteEntry 方法的訊息如何傳遞至 WriteLine 記錄追蹤接聽程式的方法:

顯示我的記錄呼叫的圖表。

您可以變更應用程式的組態檔來變更記錄檔和追蹤接聽程序的行為。 下圖顯示記錄元件與組態檔之間的對應。

顯示我的記錄設定的圖表。

記錄訊息的位置

如果元件沒有配置檔,My.Application.LogMy.Log 物件會透過 DefaultTraceListener 類別寫入應用程式的偵錯輸出。 此外,My.Application.Log 物件會透過 FileLogTraceListener 類別寫入元件的記錄檔,而 My.Log 物件則透過 WebPageTraceListener 類別寫入至 ASP.NET 網頁的輸出。

在偵錯模式中執行應用程式時,可以在 Visual Studio [輸出 ] 視窗中檢視偵錯輸出。 若要開啟 [輸出 ] 視窗,請單擊 [ 偵錯] 功能表項,指向 [Windows],然後單擊 [ 輸出]。 在 輸出 視窗中,從 顯示輸出來源 方塊中選取 偵錯

根據預設, My.Application.Log 會在使用者應用程式數據的路徑中寫入記錄檔。 您可以從FullLogFileName物件的DefaultFileLogWriter屬性取得路徑。 該路徑格式如下所示:

BasePath\CompanyName\ProductName\ProductVersion

常見的 BasePath 值如下所示。

C:\文件與設定\username\應用程式資料

CompanyNameProductName 的值ProductVersion來自應用程式的元件資訊。 記錄檔名稱的格式為 AssemblyName.log,其中 AssemblyName 是沒有擴展名之元件的檔名。 如果需要多個記錄檔,例如當應用程式嘗試寫入記錄檔時,原始記錄檔無法使用,記錄檔名稱的格式為 AssemblyName-迭代.log,其中 iteration 是一正 Integer 數。

您可以藉由新增或變更電腦的 和應用程式的組態檔來覆寫預設行為。 如需詳細資訊,請參閱 逐步解說:變更 My.Application.Log 寫入資訊的位置

記錄檔設定配置

物件 Log 具有沒有應用程式組態檔的預設實作,app.config。若要變更預設值,您必須使用新的設定來新增組態檔。 如需詳細資訊,請參閱 逐步解說:篩選 My.Application.Log 輸出

日誌組態區段位於 app.config 檔案主要節點中的 <system.diagnostics> 節點。 記錄資訊定義於數個節點中:

  • 物件的監聽器 Log 在名為 DefaultSource 的 <sources> 節點中定義。

  • 對象的嚴重性篩選 Log 定義於名為DefaultSwitch的 <switches> 節點中。

  • 日誌接收器定義於 <sharedListeners> 節點中。

<sources><switches><sharedListeners> 節點的範例會顯示在下列程式代碼中:

<configuration>
  <system.diagnostics>
    <sources>
      <source name="DefaultSource" switchName="DefaultSwitch">
        <listeners>
          <add name="FileLog"/>
        </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, processorArchitecture=MSIL"
        initializeData="FileLogWriter"
      />
    </sharedListeners>
  </system.diagnostics>
</configuration>

在部署後變更記錄設定

當您開發應用程式時,其組態設定會儲存在 app.config 檔案中,如上述範例所示。 部署應用程式之後,您仍然可以編輯組態檔來設定記錄檔。 在以 Windows 為基礎的應用程式中,此檔案的名稱是 applicationName.exe.config,而且它必須位於與可執行檔相同的資料夾中。 對於 Web 應用程式,這是與專案相關聯的 Web.config 檔案。

當您的應用程式第一次執行建立類別實例的程式代碼時,它會檢查組態檔中是否有對象的相關信息。 對於Log的物件,這會在首次存取Log物件時發生。 系統只會檢查任何特定物件的組態檔一次,這是應用程式第一次建立物件時。 因此,您可能需要重新啟動應用程式,變更才會生效。

在已部署的應用程式中,您會在應用程式啟動時重新設定 switch 物件,以啟用追蹤程式代碼。 一般而言,這牽涉到開啟和關閉交換器物件,或藉由變更追蹤層級,然後重新啟動您的應用程式。

安全性考慮

將數據寫入記錄檔時,請考慮下列事項:

  • 避免洩漏用戶資訊。 請確定您的應用程式只會將核准的資訊寫入記錄。 例如,應用程式記錄檔可能允許包含用戶名稱,但不允許包含用戶密碼。

  • 確保記錄位置安全。 任何包含潛在敏感性信息的記錄都應該儲存在安全的位置。

  • 避免誤導資訊。 一般而言,您的應用程式在使用該數據之前,應該先驗證使用者輸入的所有數據。 這包括將數據寫入應用程序記錄。

  • 避免拒絕服務。 如果您的應用程式將太多資訊寫入記錄檔,它可能會填滿記錄檔,或使尋找重要資訊變得困難。

另請參閱