1つのアプリケーションがすべてのアクティビティデータを1つのログファイルに書き込んでいる場合、複数のTraceSourceを使用することはありますか?私はコード内に複数のTraceSourceが必要なユースケースについて興味があります。コードに複数のTraceSourceが必要なのはいつですか?
答えて
TraceSourcesを使用しての良い出発点のために他の質問にこれらの答えを参照してください。
can't understand .net 2010 tracing and app.config
How to use TraceSource across classes
私はいつでもあなたが(かもしれない)かもしれない1クラス以上のものを持っていると言うでしょう複数のTraceSourceを持つことを検討してください。
複数のTraceSourceを持つ利点の1つは、ログを制御できる粒度が増えることです。たとえば、すべてのクラスで異なるTraceSourceを使用する場合は、クラスレベルまでログを制御できます。 1つ(またはそれ以上)の特定のクラスをオンにし、他のクラスをすべてオフにすることができます。
これは、NLogとlog4netのユーザーにとって一般的なパターンです。これらのログのプラットフォームを使用して、クラスの典型的な初期化が次のようなものになります。この例では
public class A
{
//NLog example
private static Logger logger = LogManager.GetCurrentClassLogger();
public F()
{
logger.Info("Inside F");
}
}
を、クラスAのためのロガーは、(NLogはGetCurrentClassLogger(でハードワークを行います)クラスの完全修飾名にちなんで命名されました)。
TraceSourceのと似たような操作を行うには、あなたがこのような何かをするだろうが:あなたはすべてのクラスでこれをやった場合
public class A
{
private static TraceSource ts = new TraceSource(System.Reflection.GetCurrentMethod().DeclaringType.ToString();
public F()
{
ts.Information("Inside F");
}
}
、あなたは簡単にクラスでログインあなたをコントロールすることができます。
このパターンは、Log4netおよびNLogと同じようにTraceSourceでよくあることではありません。 TraceSourceのユーザーは機能分野別にTraceSourcesを取得することがよくあります。
アプリを「読み取り」、「処理」、「書き込み」の機能(またはあなたにとって意味のあるもの)に分けることができます。
public class FileReader
{
private static TraceSource ts = new TraceSource("Read");
public F()
{
ts.Information("Hello from FileReader.F");
}
}
public class NetworkReader
{
private static TraceSource ts = new TraceSource("Read");
public F()
{
ts.Information("Hello from NetworkReader.F");
}
}
などなど:その場合は、あなたは彼らが使用されている機能領域に基づいて、クラス内で適切なTraceSourceのを得ることができます。
これで、「読み取り」はログオンし、他の機能領域は「オフ」にしたり、「読み取り」の詳細ログを有効にしたり、その他の機能については冗長なログを有効にしたりすることができます。
また、TraceListenersのオプションの1つは、TraceSource名を出力することです。したがって、あなたの出力では、特定の機能領域(または特定のTraceSource)から生成されたすべてのロギングメッセージを比較的簡単に見つけることができるため、ロギングを理解するのが簡単になります。
ネームスペースの命名規則が良好であれば、名前空間階層のいくつかのノードに基づいて、またはクラスが存在するアセンブリに基づいて各クラスのTraceSourceを取得することも考えられます。その情報を取得するタイプ。
あなたがTraceSourcesを見ているので、私はCodePlexの時にこのプロジェクトを見てことをお勧めします:
http://ukadcdiagnostics.codeplex.com/
それはあなたがあなたのログ出力をフォーマットすることができます(TraceSourceのに基づいて)素敵なプロジェクトですlog4netとNLogを使ってできることと同様の方法で実行します。
また、CastleからTraceSourceを中心に構築されたこのロギングラッパーを見てみることをお勧めします。
https://github.com/castleproject/Castle.Core/blob/master/src/Castle.Core/Core/Logging/TraceLogger.cs
、彼らが行っていることは興味深い事はTraceSourceの名に階層を提供することです。私は過去に似たようなものを実装しました。それはかなりうまくいく。
What's the best approach to logging?
幸運:この問題の
私の答えは、TraceSourceの階層が有益であり得るかのアイデアを提供しています!
- 1. 複数のプロジェクトに複数のTFSワークスペースが必要ですか?
- 2. ブルームフィルタに複数のハッシュ関数が必要なのはなぜですか?
- 3. このコードにklassが必要なのはなぜですか?
- 4. 自然数の教会数字コード化は不必要に複雑ですか?
- 5. エンティティフレームワークのコードが最初に、いくつかのアドバイスが必要
- 6. 2つのセッションファクトリに必要な設定ファイルの数はいくつですか?
- 7. 複数の継承が必要なシナリオはありますか?
- 8. は、文字列内に複数の変数が必要です
- 9. 複数のperlスクリプトが必要です
- 10. Dojoにはいつargs変数が必要ですか?
- 11. ANTLR 4でEOFが必要なのはいつですか?
- 12. stdafx.h:いつ必要なのですか?
- 13. xQueryから複数のファイルが必要
- 14. 異なるタイプのコントロールを持つ1つのビューに複数のコントローラが必要ですか?
- 15. Magento - カスタムモジュールに必要な複数のセットアップモデル
- 16. 異なる複数の.txtファイルの内容全体をExcel 2010に配置するコードがありますが、いくつかの変更が必要です
- 17. ASP.NETでは2つの言語が必要ですが、PHP/Rubyには1つのみが必要ですか?
- 18. JQuery/CSSには複数のクラスが必要です
- 19. 私のブルームフィルタにはいくつのハッシュ関数が必要ですか?
- 20. 純粋なHaskellコードにはスレッドプールが必要ですか?
- 21. 32バイトのアドレスに必要なビット数はいくつですか?
- 22. 複数の配列からHTMLのヘルプが必要なJSON
- 23. にはいくつかのPHPとHTMLコードの暗号化が必要ですか?ユーザーがコードを表示または編集できないように
- 24. グローバルconst charには "静的"が必要ですが、ブールには必要ないのはなぜですか?
- 25. 複数のスレッドが複数のパイプを必要とする
- 26. コントローラでInit関数が必要なのはなぜですか?
- 27. データコンプレッサーにはどのような数学が必要ですか?
- 28. 複数のホスト名にURLごとにユニークなiframeが必要
- 29. 2つのルーキーインデックスには2つのディレクトリオブジェクトが必要ですか?
- 30. MySQLは、私はPHPに新しいです、次のコードにいくつかのアドバイスが必要准()エラー