Share via


FileLoggingSession 類別

定義

表示 來自 LoggingChannel 實例的已記錄訊息目的地。

public ref class FileLoggingSession sealed : IFileLoggingSession, IClosable
/// [Windows.Foundation.Metadata.Activatable(Windows.Foundation.Diagnostics.IFileLoggingSessionFactory, 65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class FileLoggingSession final : IFileLoggingSession, IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(Windows.Foundation.Diagnostics.IFileLoggingSessionFactory, 65536, "Windows.Foundation.UniversalApiContract")]
class FileLoggingSession final : IFileLoggingSession, IClosable
[Windows.Foundation.Metadata.Activatable(typeof(Windows.Foundation.Diagnostics.IFileLoggingSessionFactory), 65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class FileLoggingSession : System.IDisposable, IFileLoggingSession
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(typeof(Windows.Foundation.Diagnostics.IFileLoggingSessionFactory), 65536, "Windows.Foundation.UniversalApiContract")]
public sealed class FileLoggingSession : System.IDisposable, IFileLoggingSession
function FileLoggingSession(name)
Public NotInheritable Class FileLoggingSession
Implements IDisposable, IFileLoggingSession
繼承
Object Platform::Object IInspectable FileLoggingSession
屬性
實作

Windows 需求

裝置系列
Windows 10 (已於 10.0.10240.0 引進)
API contract
Windows.Foundation.UniversalApiContract (已於 v1.0 引進)

備註

使用 FileLoggingSession 類別,在應用程式執行時持續將訊息和數據記錄至檔案。 您可以使用 Windows Performance Toolkit (WPT) 和其他公用程式來檢視記錄檔,例如 tracerpt.exe。

LoggingChannel 實例新增至 FileLoggingSession,並呼叫 FileLoggingSession 實例方法來移除通道、處置和執行其他作業。 通道數目目前不受限制。

注意

Windows Server 2012 R2Windows 8.1 中,每個應用程式限製為 4 個作用中的通道,且通道必須具有唯一的名稱。

FileLoggingSession 類別會在填滿緩衝區或使用者呼叫 CloseAndSaveToFileAsync 時,將記錄的訊息傳送至磁碟檔案。 FileLoggingSession 類別使用循序記錄,這表示所有訊息都會傳送至磁碟檔案,並保留訊息的循序歷程記錄。 這與 LoggingSession 類別不同,它會視需要將記錄的訊息傳送至磁碟,也就是當應用程式偵測到問題並儲存記憶體內部訊息進行分析時。

當您知道所有訊息都需要儲存時,以及應用程式無法隨選儲存步驟時,請使用 FileLoggingSession 類別。 如同 LoggingSession 類別, LoggingChannel 實例會新增至 FileLoggingSession 實例,而 FileLoggingSession 實例具有移除通道和處置的方法。 FileLoggingSession 實例會使用委派初始化為新的檔案回呼,以在發生記錄檔變換時通知應用程式。 當目前的內部記錄檔已達到容量,且正在建立新檔案以供繼續循序記錄時,此功能會叫用委派。 您也可以在暫止界限或 處置 FileLoggingSession 時呼叫委派回呼。

叫用 LogFileGenerated 事件時,應用程式會收到代表目前關閉之記錄檔的 StorageFile 。 應用程式可以轉送記錄檔,以應用程式定義的方式進行處理。 之後,會話會繼續記錄到新建立且現在開啟的目前記錄檔。 當此記錄檔達到容量時,會針對新檔案再次叫用回呼委派,並重複此程式。

當您完成記錄事件時,請呼叫 CloseAndSaveToFileAsync 以取得自上次記錄檔以來的最後一個記錄檔,如果尚未達到容量,可能仍會開啟。 您也可以使用 CloseAndSaveToFileAsync 來關閉工作階段,並取得最後一個記錄檔的存取權。 請注意,如果最後一個記錄檔是空的,或者如果 LogFileGenerated 方法已經報告所有記錄檔, CloseAndSaveToFileAsync 方法將會傳回 null。

記錄檔會建立在 ApplicationData\Logs 資料夾中。

每個記錄檔的名稱是以會話的名稱加上索引為基礎。 每次建立新的工作階段時,都會重設索引。 每次記錄檔達到大小上限時,就會關閉索引、遞增索引,並使用新的索引開啟新的記錄檔。 (因此,每次重新啟動應用程式時,都會開始覆寫先前app實例所產生的記錄檔。)

您可以新增 LogFileGenerated 事件的處理程式,以便在每次關閉記錄檔時通知您的應用程式。

如果您未使用 LogFileGenerated 事件或 CloseAndSaveToFileAsync 方法, FileLoggingSession 將不會刪除過時的記錄檔 (不過,新的會話可能會覆寫先前會話所產生的檔案) 。 您的應用程式會視需要負責尋找和清除記錄檔。

透過 LogFileGenerated 事件或 CloseAndSaveToFileAsync 方法將記錄檔提供給應用程式之前,它會重新命名為特殊的記錄檔名稱。 一律會使用相同的記錄檔名稱,因此新的記錄將會覆寫較舊的記錄。 如此一來, LogFileGenerated 事件和 CloseAndSaveToFileAsync 方法有助於防止過時的記錄檔在 ApplicationData 資料夾中浪費空間。

FileLoggingSession 會關閉目前的記錄檔,並在目前的記錄檔達到 256KB 時啟動新的記錄檔。

建構函式

FileLoggingSession(String)

初始化 FileLoggingSession 類別的新實例。

屬性

Name

取得記錄工作階段的名稱。

方法

AddLoggingChannel(ILoggingChannel)

將記錄通道新增至目前的記錄會話。

AddLoggingChannel(ILoggingChannel, LoggingLevel)

將記錄通道新增至目前的記錄會話。 記錄通道只接受具有指定記錄層級或高於指定記錄層級的事件。

Close()

結束目前的記錄會話。

CloseAndSaveToFileAsync()

結束目前的記錄會話,並將它儲存至檔案。

Dispose()

執行與釋放 (Free)、釋放 (Release) 或重設 Unmanaged 資源相關聯之應用程式定義的工作。

RemoveLoggingChannel(ILoggingChannel)

從目前的記錄會話中移除指定的記錄通道。

事件

LogFileGenerated

儲存記錄檔時引發。

適用於

另請參閱