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 フォルダーに作成されます。

各ログ ファイルの名前は、セッションの名前とインデックスに基づいています。 インデックスは、新しいセッションが作成されるたびにリセットされます。 ログ ファイルが最大サイズに達するたびに閉じられ、インデックスがインクリメントされ、新しいインデックスを使用して新しいログ ファイルが開かれます。 (その結果、アプリを再起動するたびに、アプリの前のインスタンスによって生成されたログ ファイルの上書きが開始されます)。

LogFileGenerated イベントのハンドラーを追加して、ログ ファイルが閉じられるたびにアプリに通知されるようにすることができます。

LogFileGenerated イベントまたは CloseAndSaveToFileAsync メソッドを使用しない場合、FileLoggingSession は古いログ ファイルを削除しません (ただし、新しいセッションでは、以前のセッションによって生成されたファイルが上書きされる可能性があります)。 アプリは、必要に応じてログ ファイルを見つけてクリーンアップする役割を担います。

LogFileGenerated イベントまたは CloseAndSaveToFileAsync メソッドを使用してログ ファイルをアプリに提供する前に、特別なログ ファイル名に名前が変更されます。 同じログ ファイル名が常に使用されるため、新しいログは古いログを上書きします。 このようにして、 LogFileGenerated イベントと CloseAndSaveToFileAsync メソッドは、古いログ ファイルが ApplicationData フォルダー内の領域を無駄にするのを防ぐのに役立ちます。

FileLoggingSession は、現在のログ ファイルが 256 KB に達すると、現在のログ ファイルを閉じ、新しいログ ファイルを開始します。

コンストラクター

FileLoggingSession(String)

FileLoggingSession クラスの新しいインスタンスを初期化します。

プロパティ

Name

ログ セッションの名前を取得します。

メソッド

AddLoggingChannel(ILoggingChannel)

現在のログ 記録セッションにログ チャネルを追加します。

AddLoggingChannel(ILoggingChannel, LoggingLevel)

現在のログ 記録セッションにログ チャネルを追加します。 ログ チャネルは、指定されたログ 記録レベル以上のログ レベルを持つイベントのみを受け入れます。

Close()

現在のログ 記録セッションを終了します。

CloseAndSaveToFileAsync()

現在のログ セッションを終了し、ファイルに保存します。

Dispose()

アンマネージ リソースの解放またはリセットに関連付けられているアプリケーション定義のタスクを実行します。

RemoveLoggingChannel(ILoggingChannel)

指定したログ チャネルを現在のログ セッションから削除します。

イベント

LogFileGenerated

ログ ファイルが保存されるときに発生します。

適用対象

こちらもご覧ください