3

によって提供されるいくつかのログ機能を使用して、プログラムを強化しようとしていSystem.Diagnosticsます。私のソリューションは複数のプロジェクトで構成されているため、アプリケーション全体とプロジェクトごとに 1 つのスイッチを作成したいと考えました。

問題は、どうすればこれを達成できるか、スイッチ定義をどこに置くべきかということです。

アプリケーション全体のスイッチから始めて、私が理解しているようにC#にはグローバル変数のようなものがないので、どうすればこれを達成できますか?

入れます

static TraceSwitch ApplicationSwitch = new TraceSwitch("Application", "Enables logging in the whole application.");

すべてのクラスで一度これを解決しますか、それとも同じ名前のクラスと同じ数のスイッチを作成しますか? (私の推測では後者です)

または、初期化を別のクラスに一度入れるべきですか

static class GlobalSwitch
{
    static TraceSwitch Application = new TraceSwitch("Application", "Enables logging in the whole application.");
}

このような他のすべてのクラスからの参照

public OtherClass
{
    static TraceSwitch Application = GlobalSwitch.Application;
}

これにより、プロジェクト全体で 1 つのスイッチを使用することが解決されますが、これは良い方法ですか?

アプリケーション全体の切り替えに関しては、GlobalSwitchクラスを含むプロジェクトを他のすべてのプロジェクトで参照する必要がありますが、これはできれば避けたいと思います。

これをスマートな方法で行う方法に関するいくつかの手がかりをいただければ幸いです。

4

1 に答える 1

2

私は通常、トレーススイッチ(およびログ関数)を中央のログアセンブリにラップし、スイッチへの静的インターフェイスと、使用中の基になるログ機能(通常はTrace.Write関数)を呼び出す静的ログメソッドを公開します。

于 2009-04-30T09:37:24.820 に答える