6

TraceSource クラスの MSDN ドキュメントには、app.config ファイルが TraceSource インスタンスの情報を一覧表示する方法の例があります。

http://msdn.microsoft.com/en-us/library/system.diagnostics.tracesource.aspx

ただし、TraceSource 値が格納されている場所に関する情報はありません...既存の TraceSource オブジェクトはどこに格納されていますか? それら(編集:構成されたインスタンスを意味します)はいつ構築されますか?TraceSource オブジェクトを作成するときに、TraceSource オブジェクトは新しいインスタンスの代わりに名前付きインスタンス (編集: インスタンスを構成する必要があります) を返す方法をどのように知っていますか? Reflection を使用せずに、既存の TraceSource オブジェクトのリストを見つけることはできますか?

4

2 に答える 2

2

TraceSource クラスは、ソースのプライベート リストを保持します。しかし、TraceSource クラス以外はアクセスできません。

.config ファイル セクションは、トレース ソースのリスナーを構成するためのものです。したがって、コードで TraceSource を作成すると、コンストラクターで渡した名前が使用され、.config ファイルを調べて、自動的に追加または削除する必要があるリスナーを確認します。

したがって、コードがソースを作成し、.config ファイルがそれを構成します。その逆ではなく、.config ファイルはソースを作成できません。

于 2012-12-13T23:07:01.880 に答える
0

TraceSourceオブジェクトは保存されていますか?

静的コレクション(アプリドメインごとに1つのコピー)では、ただし.NETバージョンでは、弱参照で保存されるため、作成される数が多すぎるとメモリリークが発生する可能性があります。モノバージョンは、私が正しく覚えていれば、この問題はありません。

詳細については、ソースを読むことをお勧めします。Monoソースは公式に公開されているため、追跡が容易です。

それらはいつ構築されますか?

トレースを書き込んでいるアプリがTraceSourcesource= new TraceSource();を書き込む場合

TraceSourceオブジェクトは、TraceSourceオブジェクトを作成するときに、新しいインスタンスではなく名前付きインスタンスを返す方法をどのように認識しますか?

わからない。

Reflectionを使用せずに既存のTraceSourceオブジェクトのリストを見つけることはできますか?

RedGateReflectorでこれを実行できるように使用されていました。System.NetおよびWCFライブラリはSystems.Diagnosticsを使用しますが、他のライブラリはほとんど使用しません。APIには、現在のトレースソースのランタイムを単に対話する方法はありません。それは素晴らしい機能でした。

于 2012-12-13T23:07:11.997 に答える