mvcでトレースを有効にしたい、具体的には、特定の条件が満たされた場合にページにトレースを表示したい。
System.Diagnostics.Trace
単一のリクエストのコンテキストで書き込みをリクエストした場合に、書き込みを表示できるようにすることはできますか?
mvcでトレースを有効にしたい、具体的には、特定の条件が満たされた場合にページにトレースを表示したい。
System.Diagnostics.Trace
単一のリクエストのコンテキストで書き込みをリクエストした場合に、書き込みを表示できるようにすることはできますか?
残念ながら、このTrace
クラスには、リクエストごとに解決したい条件に応じてトレースをオン/オフする方法がありません。これは、オール オア ナッシングのアプローチです。
そうは言っても、 MVC MiniProfilerを強くお勧めします(ここでは Stack Exchange サイトで使用され、特にStack Exchange Data Explorerで公開されています)。
基本的に、次のようにページにレンダリングされます。
また、リクエストごとにプロファイリングを設定できます。
using StackExchange.Profiling;
...
protected void Application_BeginRequest()
{
if (Request.IsLocal)
{
MiniProfiler.Start();
}
}
構文は、次のようにステートメントTrace
を使用する必要があるという点で、クラスを使用する場合とは少し異なります。using
using (profiler.Step("Set page title"))
{
ViewBag.Title = "Home Page";
}
その理由は、これが根本的に異なる操作だからです。トレースすると、特定の時点で情報を書き出すことになります。プロファイリングを行うときは、時間のセグメントを見ています。このusing
ステートメントを使用すると、それらのセグメントの範囲を指定できます。
少しやり過ぎかもしれませんがTrace
、プロファイリングの側面と、表示される情報の邪魔にならない性質のために、これを喜んで使用します(Trace
ページを非常に奇妙に見せるという厄介な習慣があります).
最終的には、クラスにロガーを渡し、必要に応じてその情報を条件付きでコントローラーに表示することにしました。
コンテナーを使用して、ロガー インスタンスを HttpContext のスコープにバインドし、それをビュー モデルに送り込みました。