Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Web アプリケーションのデバッグやトレースの方法はさまざまありますが、例えば Windows Azure などのサーバー側に配置した状態で ASP.NET アプリケーションを診断したい場合などに今回紹介する Glimpse が便利です。
Glimpse は、ASP.NET Web アプリケーションの診断 (Diagnostics) フレームワークで、オープンソースとして開発されています。使い方はとても簡単で、NuGet パッケージマネージャーから ASP.NET アプリケーションに簡単に組み込むことができます。
● Glimpse のインストール
[NuGet パッケージの管理] ダイアログで Glimpse を検索すると、Glimpse.MVC3 や Glimpse.MVC4 などいくつかのパッケージが見つかります。例えば ASP.NET MVC 4 のアプリケーション プロジェクトでは、Glimpse.MVC4 パッケージをインストールします。
Glimpse をインストールすると、プロジェクトに Glimpse のアセンブリが追加されると共に Web.config に ASP.NET ハンドラー (Glimpse.axd) が設定されます。
● Glimpse を使う
Glimpse をインストールした Web アプリケーションで https://[アプリケーション URL]/Glimpse.axd を開くと下記のページが表示されます。
ここで [Turn Glimpse On] をクリックして Glimpse の診断を有効にしてから、再度対象のアプリケーションを表示します。すると、ページの右下に Glimplse のアイコンが表示されるようになります。
このアイコンをクリックすると診断ウィンドウが表示され、各種情報を見ていくことが出来るようになります。下記は、リクエスト処理のタイムライン表示の一例です。
● リモート環境でアプリケーションの診断を行う
Glimpse を使って、Windows Azure などに配置したアプリケーションの診断も行うことができます。デフォルトではローカル環境でのみ診断が有効になっているので、リモート環境でも診断が行えるように Web.config の Glimpse 要素の設定を変更します。下記の通り、コメントアウトされている runtimePolicies 要素を有効にすればリモートでの診断が可能になります。
<glimpse defaultRuntimePolicy="On" endpointBaseUri="~/Glimpse.axd">
<!-- If you are having issues with Glimpse, please include this. It will help us figure out whats going on.
<logging level="Trace" />-->
<!-- Want to use Glimpse on a remote server? Ignore the LocalPolicy by removing this comment.-->
<runtimePolicies>
<ignoredTypes>
<add type="Glimpse.AspNet.Policy.LocalPolicy, Glimpse.AspNet"/>
</ignoredTypes>
</runtimePolicies>
</glimpse>
Windows Azure Web サイトに配置した ASP.NET アプリケーションで Glimpse 診断を使った例が下記です。サーバーの各種情報 (System Assemblies のバージョンなど) も確認できます。
また、System.Diagnostics を利用したトレース出力も Glimpse の Trace ウィンドウに表示されます。
using System.Diagnostics;
...
public ActionResult Index()
{
Trace.TraceInformation("Home/Index was called.");
Trace.TraceError("This is Bad!");
....
こういった便利機能が、NuGet を通して簡単にプロジェクトに追加できるのはとても便利ですね。この Glimpse はそれほど頻繁に使うものではないかもしれませんが、覚えておくときっと役に立つときがくるのではないでしょうか。。。