.NET 4.0で動作するビジネスレイヤの単体テストを記述しています。ビジネスレイヤーは、通常SOAPおよびREST Webサービス内で実行されるC#クラスライブラリです。私たちのアプリケーションは、ロギングのために別のラッパーアセンブリ内でlog4netを使用します。ロギングアセンブリのC#コードには、log4netに構成ファイルの名前を通知するアセンブリ情報ディレクティブがあります。このファイルは、コンフィグレーションファイルの名前を示すために使用されています(アセンブリ:log4net.Config.XmlConfigurator(ConfigFile = "AcmeLogging.config"、Watch = true) ]Visual Studio/Microsoft Test Frameworkから実行すると、Log4netは構成ファイルを見つけることができません
Webサービスでは、ラッパーを介してlog4netを初期化すると正常に動作します。ユニットテストアセンブリから初期化すると、コンフィギュレーションファイルが表示されません。 configuratinoファイルは、実行ディレクトリにコピーされるプロパティによって設定され、bin \ debugディレクトリに表示されます。同じフォルダ内で実行されているロギングアセンブリを使用したクイックコンソールテストプログラムはうまく動作します。好奇心をそそるのは、動作の問題が断続的であり、異なる開発者のマシン上で異なる時間にポップアップし、決定論的な方法では解決できないということです。
ラッパーアセンブリコードを実行すると、log4netLogManager.GetLogger()呼び出しは正しく返されますが、log.Logger.Repository.GetAppenders()によって返されたアペンダーのリストは空です。この誤った動作は、ファイルがBin \ Debugフォルダーにあるかどうかにかかわらず同じであるため、ファイルが表示されていないと考えられます。
Microsoft Test Frameworkでlog4netを実行することについて何か不足していることについての手がかりをいただければ幸いです。
これは私たちが必要としていたもので、これはチーム全体を非常に幸せにするでしょう。どうもありがとうございました。私はこの回答に投票したいと思いますが、そうするには十分なSO活動がありませんが、将来の読者はこれを投票に追加投票してください。 –