FileLoggingSession 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
表示 來自 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
- 繼承
- 屬性
- 實作
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 R2 和 Windows 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 |
儲存記錄檔時引發。 |