プロジェクト全体またはアプリケーション全体のTraceSwitchをデザインのどこに配置すればよいですか?
-
03-07-2019 - |
質問
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
クラスを含むプロジェクトを参照する必要がありますが、可能であれば避けたいと思います。
これをスマートに行う方法についての手がかりは非常にありがたいです。
解決
通常、トレーススイッチ(およびログ関数)を中央のログアセンブリにラップし、静的インターフェイスをスイッチに公開し、使用中の基になるログ機能(通常はTrace.Write-functions)を呼び出す静的ログメソッドも公開します)。
所属していません StackOverflow