セットアップの一部として呼び出すアプリケーション (ASP.Net WebAPI を自己ホストするコンソール アプリケーション) がXmlConfigurator.Configure()
あります。
アプリケーションのapp.config
ファイルが次のようになっている場合、問題なく動作します。
<configuration>
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
</log4net>
</configuration>
<log4net>
空の要素を取り出すとハングします:
<configuration>
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
</configuration>
過去に log4net を使用したときに、この動作は他の場所では見たことがありません (通常は、「log4net:エラー XmlConfigurator: アプリケーションの .config ファイルで構成セクション 'log4net' が見つかりませんでした。」というメッセージがコンソールに出力されます)。
何か間違ったことをしているのですか、それとも log4net のバグに出くわしたのでしょうか?
私はこれを広範囲にデバッグしました。次の 2 つの動作があります。
- 私がそれをまたぐと、への呼び出し
XmlConfigurator.Configure()
が無期限にハングします - への呼び出しは
XmlConfigurator.Configure()
ステップ オーバーできますが、アプリケーションがハングしたように見えます。実行を一時停止してアクティブなスレッドを見ると、log4net メソッド (のようなものConfigureFromFile
) でスタックしているスレッドがあります。
いずれにせよ、アプリケーション全体がハングします。
ハングしたスレッドからのスタック トレースを次に示します (上記の 2 番目のケース)。