Share via


ASP.NET トレースの概要

更新 : 2007 年 11 月

ASP.NET トレースを使用すると、ASP.NET ページの単一の要求に関する診断情報を表示できます。ASP.NET トレース機能によって、ページの実行パスをたどり、実行時に診断情報を表示し、アプリケーションをデバッグできます。ASP.NET トレース機能は、システムレベルのトレース機能に統合して、分散多層アプリケーションに複数レベルのトレース出力を提供できます。

このトピックの内容は次のとおりです。

  • 機能

  • 背景

  • コード例

  • クラス リファレンス

機能

ASP.NET のトレース機能は、次の機能を提供します。

  • Debugging statments   デバッグ ステートメントをコードに記述でき、運用サーバーへの配置時にアプリケーションからデバッグ ステートメントを削除する必要はありません。トレースを使用すると、ページに変数や構造体を記述し、ページまたはアプリケーションの実行パスをトレースすることもできます。

  • Integrated tracing functionality   System.Diagnostics.Trace クラスが生成するメッセージを ASP.NET トレース出力にルーティングし、ASP.NET トレース機能が生成するメッセージを System.Diagnostics.Trace にルーティングできます。ASP.NET インストルメンテーション イベントを System.Diagnostics.Trace に転送することもできます。詳細については、「チュートリアル : ASP.NET トレースと System.Diagnostics トレースの統合」を参照してください。

  • Programmatic access to trace messages   コードでトレース メッセージにアクセスして操作し、トレース メッセージの形式をさらに細かく制御したり、必要な追加処理を実行できます。

  • Application-level tracing   アプリケーションレベルのトレース オプションによって、トレース セッションを再起動したり、サーバーに格納するトレース データの量を増やしたりせずに、最新のトレース データを表示できます。最新のトレース データが表示され、以前のトレース データは破棄されます。

ページのトップへ

背景

トレースにより、指定した診断情報とカスタムのトレース メッセージがページの出力に追加され、要求元ブラウザにこの情報が送信されます。この情報は、トレース ビューア (Trace.axd) で別のウィンドウとして表示することもできます。トレース ビューアには、ASP.NET Web アプリケーションの各ページのトレース情報が表示されます。トレース情報は、ASP.NET によるページ要求の処理中にエラーや望ましくない結果が発生したとき、それを調べるために役立ちます。

トレース情報の表示は、個々のページで構成できます。または、明示的にトレースを無効にしているページを除いて、すべてのページにトレース情報を表示する場合は、アプリケーションの Web.config ファイルで構成します。アプリケーションレベルのトレースを設定すると、個々のページでトレースを有効または無効にするために設定を変更する必要がないため便利です。

トレース ステートメントは、トレースが有効な場合にだけ処理されて表示されます。トレース情報は、ページ、トレース ビューア、またはその両方に表示されるように制御できます。ページのトレースを有効にする方法については、「方法 : ASP.NET ページのトレースを有効にする」を参照してください。アプリケーションのトレースを有効にする方法については、「方法 : ASP.NET アプリケーションのトレースを有効にする」を参照してください。

アプリケーションレベルの ASP.NET トレース

アプリケーションレベルのトレースは、Web.config ファイルの trace 要素を使用して有効にします。アプリケーションレベルのトレースを有効にすると、ASP.NET は、指定した要求の最大数に達するまで、そのアプリケーションへの各要求に関するトレース情報を収集します。既定の要求数は 10 です。トレース ビューアがこの制限に達すると、アプリケーションはトレース要求の格納を中止します。最も古いトレース データを保存して新しい項目を破棄する、または最も新しいトレース データを保存して古い項目を破棄するようにトレースを構成できます。

Bb386420.alert_note(ja-jp,VS.90).gifメモ :

Web.config ファイルでアプリケーション全体のトレースを有効にすると、そのアプリケーションの各ページで、トレース情報の収集と処理が行われます。アプリケーション全体の設定をオーバーライドするには、ページの @ Page ディレクティブの Trace 属性を false に設定します。ページのコードに含めるすべての Write ステートメントまたは Warn ステートメントが格納され、トレース ビューアだけに返されます。

トレース情報の表示

個別のページの下部にトレース情報を表示できます。トレースが有効になっている場合は、トレース ビューア (Trace.axd) を使用して、ASP.NET が収集してキャッシュした情報を表示することもできます。トレース表示の内容については、このトピックの「ASP.NET トレース情報の読み取り」を参照してください。

関連付けられているページの最後にトレース情報を表示する場合は、trace 要素の PageOutput 属性を true に設定します。アプリケーションレベルのトレースを有効にする場合に、一部のページにトレース情報を表示しない場合は、ページの @ Page ディレクティブの Trace 属性を false に設定します。ASP.NET アプリケーションの構成方法の詳細については、「ASP.NET 構成の概要」を参照してください。

既定では、アプリケーション レベルのトレースは、ローカル Web サーバー コンピュータでだけ表示できます。アプリケーションレベルのトレース情報をリモート コンピュータに表示する場合は、trace 要素の LocalOnly 属性を false に設定します。

Bb386420.alert_note(ja-jp,VS.90).gifメモ :

Web アプリケーションのセキュリティを確保するため、アプリケーションの開発時および配置時にだけ、リモート トレース機能を使用してください。アプリケーションを実行用 Web サーバーに転送する前に、この機能が無効になっていることを確認してください。この機能を無効にするには、Web.config ファイルで LocalOnly 属性を true に設定します。

最大 40 までの要求についてトレース情報を収集するアプリケーション トレース構成の例を次に示します。トレース ビューアを表示するために、サーバー以外のコンピュータでブラウザを有効にします。

<configuration>
  <system.web>
    <trace enabled="true" requestLimit="40" localOnly="false" />
  </system.web>
</configuration>

カスタムの ASP.NET トレース メッセージの書き込み

カスタムのトレース情報を ASP.NET ページのトレース表示またはトレース ログに追加できます。トレース ログに記録されるトレース情報は、トレース ビューアで表示できます。詳細については、「方法 : トレース ビューアで ASP.NET トレース情報を表示する」を参照してください。

トレース情報は、TraceContext クラスの Warn メソッドまたは Write メソッドを使用して書き込むことができます。この 2 つのメソッドの違いは、Warn メソッドで書き込まれたメッセージが赤のテキストで表示されることです。

TraceContext クラスを使用して、ASP.NET ページの最後にトレース情報を表示する方法を次の例に示します。ポストバックを発生した各 LinkButton コントロールに対して、異なる例外がスローされます。ArgumentException インスタンスまたは InvalidOperationException インスタンスを初期化するために使用するエラー メッセージがトレース ログに記録されます。

<%@ Page Language="VB" Trace="true" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<script runat="server">

  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

    Try
      If (IsPostBack) Then

        Select Case Request.Form("__EVENTTARGET")
          Case "WarnLink"
            Throw New ArgumentException("Trace warn.")
          Case "WriteLink"
            Throw New InvalidOperationException("Trace write.")
          Case Else
            Throw New ArgumentException("General exception.")
        End Select  
      End If
    Catch ae As ArgumentException
      Trace.Warn("Exception Handling", "Warning: Page_Load.", ae)
    Catch ioe As InvalidOperationException
      Trace.Write("Exception Handling", "Exception: Page_Load.", ioe)
    End Try
  End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Trace Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:LinkButton id="WriteLink" 
                      runat="server"
                      text="Generate Trace Write" />
      <asp:LinkButton id="WarnLink"
                      runat="server"
                      text="Generate Trace Warn" />
    </div>
    </form>
</body>
</html>
<%@ Page Language="C#" Trace="true"  %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<script runat="server">
void Page_Load(object sender, EventArgs e)
{
    try {
      if (IsPostBack)
      {

        switch (Request.Form["__EVENTTARGET"])
        {
          case "WarnLink":
            throw new ArgumentException("Trace warn.");
            break;
          case "WriteLink":
            throw new InvalidOperationException("Trace write.");
            break;
          default:
            throw new ArgumentException("General exception.");
            break;          
        }
      }
    }
    catch (ArgumentException ae) {    
        Trace.Warn("Exception Handling", "Warning: Page_Load.", ae);
    }
    catch (InvalidOperationException ioe) {    
        Trace.Write("Exception Handling", "Exception: Page_Load.", ioe);
    }
}

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Trace Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:LinkButton id="WriteLink" 
                      runat="server"
                      text="Generate Trace Write" />
      <asp:LinkButton id="WarnLink"
                      runat="server"
                      text="Generate Trace Warn" />
    </div>
    </form>
</body>
</html>

ASP.NET トレースの情報の読み取り

追加されたトレース情報は、ASP.NET ページの最後、またはトレース ビューアに表示できます。どちらの場合にも、表示される情報は同じです。ASP.NET はトレース情報を整理して、一連のテーブルとして表示します。トレース情報をページに表示する方法の詳細については、「方法 : ASP.NET ページのトレースを有効にする」を参照してください。トレース情報をトレース ビューアに表示する方法の詳細については、「方法 : トレース ビューアで ASP.NET トレース情報を表示する」を参照してください。

トレース情報は、次の順序で表示されます。

要求の詳細

[要求の詳細] セクションには、現在の要求と応答に関する一般的な情報が表示されます。

説明

セッション ID

指定された要求のセッション ID です。

要求時間

要求が発行された時刻です。

要求のエンコード

要求の文字エンコーディングです。

要求の種類

HTTP メソッドです (GET または POST)。

状態コード

応答に関連付けられているステータス コードです。詳細については、W3C (World Wide Web Consortium) Web サイトの RFC 2616 を参照してください。

応答のエンコード

応答の文字エンコーディングです。

トレース情報

[トレース情報] セクションには、ページレベルのイベントの流れが表示されます。カスタムのトレース メッセージを作成している場合は、メッセージも [トレース情報] セクションに表示されます。

説明

カテゴリ

Warn メソッドまたは Write メソッドの呼び出しで指定するカスタムのトレース カテゴリです (存在する場合)。

メッセージ

Warn メソッドまたは Write メソッドで指定するカスタムのトレース メッセージです (存在する場合)。

最初から

最初のトレース メッセージが処理された時点からの経過時間 (秒単位) です。最初のトレース メッセージはリストの先頭に表示されます。

最後から

前のトレース メッセージを処理してから現在のトレース メッセージを処理するまでの経過時間 (秒単位) です。

コントロールのツリー

[コントロールのツリー] セクションには、ページに作成されている ASP.NET サーバー コントロールに関する情報が表示されます。

説明

コントロール ID

コントロールの ID です。コントロールの ID プロパティを指定しなければ、UniqueID プロパティを使用して ID が生成されます。

コントロールの完全限定型です。

描画サイズのバイト数 (子を含む)

子コントロールを含む表示コントロールのサイズ (バイト単位) です。これは、ブラウザに送信された実際の HTML、XML、またはその他の形式のデータ サイズです。

ViewState サイズのバイト数

コントロールのビューステートのサイズ (バイト単位) です。子コントロールは除外されます。詳細については、「ASP.NET の状態管理の概要」を参照してください。

ControlState Size のバイト数

コントロールの制御状態のサイズ (バイト単位) です。子コントロールは除外されます。詳細については、「ASP.NET の状態管理の概要」を参照してください。

セッション状態

[セッション状態] セクションには、セッション状態に格納される値に関する情報が表示されます (存在する場合)。詳細については、「ASP.NET セッション状態の概要」を参照してください。

説明

セッション キー

セッション状態に格納されるデータのキーです (存在する場合)。

データを格納するオブジェクトの完全修飾型です。

セッション状態に格納されるデータの文字列表現です (存在する場合)。

アプリケーション状態

[アプリケーション状態] セクションには、アプリケーション状態に格納される値に関する情報が表示されます (存在する場合)。詳細については、「ASP.NET のアプリケーション状態の概要」を参照してください。

説明

アプリケーション キー

アプリケーション状態に格納されるデータのキーです (存在する場合)。

データを格納するオブジェクトの完全修飾型です。

アプリケーション状態に格納されるデータの文字列表現です (存在する場合)。

クッキー コレクション

[Request Cookies] セクションと [Response Cookies] セクションには、要求と応答ごとにブラウザとサーバー間でやり取りされた Cookie に関する情報が表示されます。このセクションには、永続的 Cookie とセッション Cookie の両方が表示されます。ASP.NET は、Cookie ベースのセッション状態、フォーム認証などのための Cookie を自動的に作成します。詳細については、「ASP.NET の Cookie の概要」を参照してください。

説明

名前

Cookie の名前です。

Cookie の値です。多値の場合は Cookie のサブキーおよびその値です。

サイズ

Cookie のサイズ (バイト単位) です。

ヘッダー コレクション

[ヘッダー コレクション] セクションには、要求と応答のメッセージ ヘッダーの名前/値の組み合わせに関する情報が表示されます。この組み合わせは、メッセージ本文または要求されたリソースに関する情報を提供します。ヘッダー情報は、要求メッセージをどのように処理し、応答メッセージをどのように作成するかを制御するために使用します。HTTP ヘッダーの詳細については、W3C (World Wide Web Consortium) Web サイトの RFC 2616 を参照してください。

説明

名前

ヘッダーの名前です。

ヘッダーの値です。

フォーム コレクション

[フォーム コレクション] セクションには、POST 操作 (ポストバック) 中の要求で送信されたフォームの要素値 (コントロール値) を表す名前/値の組み合わせが表示されます。

説明

名前

フォーム変数の名前です。

フォーム変数の値です。

Querystring コレクション

[Querystring コレクション] セクションには、URL に含めて渡される値が表示されます。URL では、クエリ文字列情報とパス情報は疑問符 (?) によって区切られ、複数のクエリ文字列要素はアンパサンド (&) によって区切られます。クエリ文字列の名前/値の組み合わせは、等号 (=) によって区切られます。HttpRequest オブジェクトの QueryString プロパティは、クエリ文字列変数の NameValueCollection を返します。

説明

名前

クエリ文字列変数の名前です。

クエリ文字列変数の値です。

サーバー変数

[サーバー変数] セクションには、サーバーに関連する環境変数と要求ヘッダー情報のコレクションが表示されます。HttpRequest オブジェクトの ServerVariables プロパティは、サーバー変数の NameValueCollection を返します。

説明

名前

サーバー変数の名前。

サーバー変数の値です。

ページのトップへ

ASP.NET トレースと診断トレース

ASP.NET トレースは、ASP.NET Web ページと ASP.NET トレース ビューア (Trace.axd) に表示されるメッセージを記述します。これとは対照的に、System.Diagnostics.Trace クラスは標準の .NET Framework トレース出力 (一般にコンソール ウィンドウ) にトレース メッセージを書き込みます。ASP.NET Web ページがビジネス オブジェクトおよびその他のコンポーネントとやり取りする方法を簡単に追跡するには、ASP.NET トレース出力を System.Diagnostics トレースに統合します。次に、すべてのトレース メッセージをいずれかの出力にルーティングします。

ASP.NET トレースと System.Diagnostics.Trace の両方を使用する一般的な例としては、中間層ビジネス オブジェクトを使用してデータおよびビジネス ルールとやり取りする Web ページがあります。トランザクションやキューなどの Enterprise Services を使用するページの System.Diagnostics.Trace トレースを使用することもできます。このような状況では、ビジネス コンポーネントとエンタープライズ コンポーネントがページを正しく実行するうえで重要な役割を果たします。単一のトレース出力を使用して複数の層にまたがる実行の流れを監視するアプリケーション分析にも役立ちます。詳細については、「方法 : ASP.NET アプリケーションのトレースを有効にする」を参照してください。

トレースの構成属性

アプリケーションレベルのトレースの動作を変更するために使用する Web.config ファイルの trace 要素の属性を次の表に示します。

属性

説明

Enabled

アプリケーションのトレース機能を有効にする場合は true、無効にする場合は false に設定します。既定値は false です。個々のページに対してこの設定をオーバーライドする場合は、ページの @ Page ディレクティブの Trace 属性を true または false に設定します。

PageOutput

ページとトレース ビューア (Trace.axd) の両方に表示する場合は true、それ以外の場合は false に設定します。既定値は false です。

Bb386420.alert_note(ja-jp,VS.90).gifメモ :
トレースが有効になっている個々のページは、この設定の影響を受けません。

RequestLimit

サーバーに格納されるトレース要求の数です。既定値は 10 です。

TraceMode

トレース情報が表示される順序です。情報が処理された順序で並べ替える場合は、SortByTime に設定します。ユーザーが定義したカテゴリでアルファベット順に並べ替える場合は、SortByCategory に設定します。既定値は SortByTime です。

LocalOnly

トレース ビューア (Trace.axd) をホスト Web サーバーだけで使用できるようにする場合は true、それ以外の場合は false に設定します。既定値は true です。

MostRecent

トレース出力として最新のトレース情報を表示する場合は true、それ以外の場合は false を設定します。この値が false の場合、requestLimit の値を超えると新しい要求は格納されません。既定値は false です。

Bb386420.alert_note(ja-jp,VS.90).gifメモ :
requestLimit 属性に定義されている限界を超えるトレース データは、mostRecent が true の場合のみ最新のデータによって破棄されます。

コード例

"方法" トピックと "チュートリアル" トピック

方法 : ASP.NET ページのトレースを有効にする

方法 : ASP.NET アプリケーションのトレースを有効にする

方法 : トレース ビューアで ASP.NET トレース情報を表示する

チュートリアル : ASP.NET トレースと System.Diagnostics トレースの統合

ページのトップへ

クラス リファレンス

クラス

説明

System.Diagnostics.Trace

トレースを実装するためのメイン クラスです。

TraceContext

Web 要求の実行に関する詳細情報をキャプチャして提供します。

ページのトップへ

参照

概念

パフォーマンス、トラブルシューティング、およびデバッグ

参照

ページのトップへ