次の方法で共有


トレース メッセージの書き込み

ASP.NET には、Trace オブジェクトが (ResponseRequest、および 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! になります。

ページのトレース ステートメント

ページのトレース ログにカスタム トレース メッセージを書き込むには

  1. ページのコード宣言ブロックまたは分離コード クラスで Trace プロパティを使用し、TraceContext のメソッドの 1 つを呼び出します。

  2. トレース ステートメントで省略可能パラメータ category を指定します。このカテゴリは、トレース ステートメントを並べ替えて表示するために使用できます。

  3. トレース ステートメントで message パラメータを指定します。このパラメータには、文字列またはメソッドを指定できます。

  4. 省略可能なパラメータ 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.")
    

カスタム サーバー コントロールのトレース ログにカスタム トレース メッセージを書き込むには

  1. サーバー コントロールのコードで Context プロパティを使用し、TraceContext のメソッドの 1 つを呼び出します。

  2. トレース ステートメントで省略可能パラメータ category を指定します。このカテゴリは、トレース ステートメントを並べ替えて表示するために使用できます。

  3. トレース ステートメントで message パラメータを指定します。

  4. 省略可能なパラメータ 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 クラス | アプリケーション レベルのトレースの有効化