none
Visual Studio 2015のTraceの表示について RRS feed

  • 質問

  • こんにちは。

    Visual Studio Professional 2015 を利用して開発しています。

    プログラムを実行すると、Trace結果が「出力」ペインに表示されます。

    現在、Informationも含め全てのTrace結果が出力されていますが

    表示内容をWarning,Errorのレベルに限定して出力させることは可能でしょうか。

    なんらかの拡張機能が必要でしょうか?

    よろしくお願い致します。

    2017年3月6日 6:56

回答

すべての返信

  • Trace.TraceErrorなどを使って出力している、ということでいいですか?

    app.configのconfiguration要素の配下に、以下の記述を追加してみてはどうでしょうか。

    <system.diagnostics>
      <sharedListeners>
        <add name="LevelFiltered" type="System.Diagnostics.DefaultTraceListener">
          <filter type="System.Diagnostics.EventTypeFilter" initializeData="Warning"/>
        </add>
      </sharedListeners>
      <trace>
        <listeners>
          <add name="LevelFiltered"/>
          <remove name="Default"/>
        </listeners>
      </trace>
    <system.diagnostics>

    • 回答としてマーク CharAzurable 2017年3月16日 4:25
    2017年3月6日 8:28
  • ご回答ありがとうございます。

    Traceの生成方法はご指摘の通りです。

    .configで制御できることは知りませんでした。

    今回は、出来ればデバッグ中にリアルタイムに、UIで、ドロップダウンで簡単に変更できるような形で

    表示内容を絞り込めるようなものが知りたいです。

    Azureの場合、ポータルから簡単にできるのですが、Visual Studioのローカル環境の場合、同様の事を行うことが出来ず、大量のInformationが流れて不便なのです。

    2017年3月6日 14:12
  • app.config で System.Diagnostics.DefaultTraceListener を調整した場合に反映されるようであれば、下記のようにして対処できるかも知れません。

    var dtl = Trace.Listeners.OfType<DefaultTraceListener>().FirstOrDefault();
    if (dtl != null)
    {
        var level = SourceLevels.Error;
        dtl.Filter = new System.Diagnostics.EventTypeFilter(level);
        // dtl.TraceOutputOptions = TraceOptions.DateTime | TraceOptions.ThreadId;
    }

    あるいはアプリケーション構成ファイルを書き換えた上で Trace.Reresh() で反映させるか、もしくは TraceSwitch/TraceSource を用意したり、出力済みのトレース情報を絞り込んで表示・検索したりできるようなリスナーを自作するという手もあるかも。

    2017年3月7日 2:25