トレース メッセージの書き込み
ASP.NET には、Trace オブジェクトが (Response、Request、および Context オブジェクトと同様に) 用意されています。Trace オブジェクトを使用すると、ページまたはアプリケーション全体に対してトレースを有効にしたとき表示されるデバッグ ステートメントを記述できます。
ASP.NET は、TraceContext クラスを使用して、要求に関する情報、要求の制御階層構造、およびトレース情報を格納します。トレース情報には、ページ要求の有効期間を構成する段階の一部と、この情報に含めるように指定したカスタム ステートメントが含まれています。TraceContext クラスは、Page.Trace プロパティを通じて Web フォーム ページで利用できます。Control クラスを拡張してカスタム ASP.NET サーバー コントロールを作成する場合は、Control.Context.Trace 構文を使用して、Control.Context プロパティを通じて TraceContext クラスにアクセスできます。ただし、アプリケーションの Global.asax ファイルや IHttpHandler インターフェイスを拡張するクラスなど、ページやコントロール以外のファイルからトレース ステートメントを含める場合は、HttpContext.Current プロパティを使用して TraceContext クラスにアクセスする必要があります。この場合は、HttpContext.Current.Trace 構文を使用します。
TraceContext クラスには、Write および Warn の 2 つのメソッドが用意されています。これらのメソッドを使用すると、トレース ログにステートメントを書き込むことができます。どちらのメソッドもオーバーロードされており、トレース カテゴリ、テキスト メッセージ、およびオプションのエラー情報を指定できます。これら 2 つのメソッドの違いは、Warn メソッドではテキストが赤色で表示されるという点だけです。
メモ Write または Warn メソッドの呼び出しでカテゴリを指定すると、そのカテゴリを使用してトレース ステートメントを並べ替えることができます。詳細については、「ページのトレースの有効化」と「アプリケーション レベルのトレースの有効化」を参照してください。
どちらのメソッドもオーバーライドされており、3 つのバージョンがあります。文字列引数を 1 つだけ指定して Warn または Write を呼び出すと、その引数はメッセージとして扱われます。引数を 2 つ指定すると、1 番目の引数はカテゴリとして扱われます。このカテゴリを使用して、トレースが有効な場合に表示される [トレース情報] テーブルのメッセージの表示順序を並べ替えることができます。3 番目の引数は、要求に対するエラー情報を含む Exception 型の引数です。
ページまたはアプリケーション全体のトレースを有効にすると、これらのトレース ステートメントとその他のトレース情報が要求元ブラウザに表示されます。
セキュリティに関するメモ ページのトレースが有効になっていると、そのページをサーバーから要求したすべてのブラウザにトレース情報が表示されます。トレースにはサーバー変数の値などの重要な情報が表示されるため、セキュリティ上の問題が発生する可能性があります。アプリケーションを実行サーバーへ移植する前に、ページのページ トレースを無効にしてください。ページ トレースを無効にするには、Trace 属性を false に設定するか、この属性を削除します。
ページのトレースが有効になっているとき、カスタム トレース ステートメントが [トレース情報] テーブルとして表示される例を、次のスクリーン ショットに示します。最初の赤いテキストのメッセージは Warn メソッドによって生成されるもので、カテゴリは Render
、メッセージは Text is about to render!
になります。同じカテゴリの 2 つ目のカスタム メッセージは Write メソッドによって生成され、メッセージは Text finished rendering!
になります。
ページのトレース ステートメント
ページのトレース ログにカスタム トレース メッセージを書き込むには
ページのコード宣言ブロックまたは分離コード クラスで Trace プロパティを使用し、TraceContext のメソッドの 1 つを呼び出します。
トレース ステートメントで省略可能パラメータ category を指定します。このカテゴリは、トレース ステートメントを並べ替えて表示するために使用できます。
トレース ステートメントで message パラメータを指定します。このパラメータには、文字列またはメソッドを指定できます。
省略可能なパラメータ errorInfo を指定します。これは、ページのエラーに関する情報を含むパラメータです。
次の TraceContext.Warn メソッドの例では、カテゴリを
Render
、トレース メッセージをText is about to render
として定義します。Trace.Warn("Render", "Text is about to render."); [Visual Basic] Trace.Warn("Render", "Text is about to render.")
カスタム サーバー コントロールのトレース ログにカスタム トレース メッセージを書き込むには
サーバー コントロールのコードで Context プロパティを使用し、TraceContext のメソッドの 1 つを呼び出します。
トレース ステートメントで省略可能パラメータ category を指定します。このカテゴリは、トレース ステートメントを並べ替えて表示するために使用できます。
トレース ステートメントで message パラメータを指定します。
省略可能なパラメータ errorInfo を指定します。これは、ページのエラーに関する情報を含むパラメータです。
TraceContext.Write メソッドを使用して、サーバー コントロールのトレース ログにカスタム ステートメントを書き込む例を次に示します。カテゴリは
My Class
、メッセージはThis is a simple trace statement
です。Context.Trace.Write("My Class","This is a sample trace statement."); [Visual Basic] Context.Trace.Write("My Class","This is a sample trace statement.")
場合によっては、トレースが有効なときにだけ Write メソッドまたは Warn メソッドへステートメントを渡すことがあります。TraceContext オブジェクトの Boolean プロパティである IsEnabled を使用すると、これらのメソッドを条件付きで呼び出すことができます。
トレースが有効なときにだけログにトレース メッセージを書き込むには
そのコードが含まれるページやアプリケーションに対し、トレースが有効になっているかどうかを判別する If ステートメントを作成します。次に、Trace.IsEnabled プロパティが true を返したときに実行される条件ステートメントを作成します。
ページでトレースが有効になっていることを確認し、Write メソッドを使用して、データベースから選択された数の本を [トレース情報] テーブルに書き込む例を次に示します。
If (Trace.IsEnabled) { For (int i=0; i<ds.Tables["Books"].Rows.Count; i++) { Trace.Write("Prod",ds.Tables["Books"].Rows[i][0].ToString()); } } [Visual Basic] If Trace.IsEnabled Then For i=0 To ds.Tables("Books").Rows.Count-1 Trace.Write("Prod",ds.Tables("Books").Rows(i)(0).ToString()) Next End If
参照
TraceContext クラス | ASP.NET トレース | Page クラス | HttpContext クラス | アプリケーション レベルのトレースの有効化