NUnitプロジェクトでlog4Netを初期化する最良の方法は何ですか?もちろん、可能な限り多くの初期ログ出力を取得できるようになるとすぐに、initコード(つまり、XmlConfigurator.Configure()
)を呼び出したいと思います。しかし、私のプロジェクトはNUnitを介して実行されているので、私はそのエントリポイントをほとんど制御していません。NUnitでできるだけ早くlog4Netを初期化してください。
NUnitの文書によると、最初にいくつかのコンストラクタを呼び出し、次に[TestFixtureSetup]
とマークされたクラスに[SetUp]
という属性を付けたメソッドを呼び出す必要があります。
まず、静的ヘルパークラスを作成しましたが、何度も何度も呼び出すことができます。
public static class LoggingFacility
{
private static bool _loggerIsUp = false;
public static void InitLogger()
{
if (_loggerIsUp == false)
XmlConfigurator.ConfigureAndWatch(f);
_loggerIsUp = true;
}
}
その後、私が作ったすべての私の[TestFixtureSetup]
LoggingFacility.initLogger()
を呼び出すよりも他にほとんど何もしない単一のものを継承します。しかし、それはまだ私がランダムに仮定することができる順序で、より早く実行されるすべてのコンストラクタを残します。さらに、私はいくつかのコードを実行することさえできる前に、おそらく静的な初期化を行うでしょう。
実際、私のログで見ることができるように、最初の4秒ほどの実行は完全に記録されていません。
すべてのコンストラクタでInitLogger()
を呼び出して、静的な初期化子の使用を禁止する必要がありますか?それは厳しい仕事です!
誰かがこれで魔法を知っていますか?例えば、あなたが[SetUp]
が付い[SetUpFixture]
属性とメソッドの付いたクラスを使用する必要があり、単一の初期化のポイントについては、
はちょうどあなたがテストの進行状況/結果をログに記録するか、一部のクラスの依存関係としてロガーをインスタンス化するために、テストでlog4netのを使用している目的のために不思議 – sll
@sll?:私は2つのロギング出力を使用します:最初はテスト出力がNUnitより少し冗長であり、もう1つは速い準備ができていることですが、テストアプリケーションのデバッグ用です – PPC