XmlConfigurator.Configure()
我有一个应用程序(一个自托管 ASP.Net WebAPI 的控制台应用程序)作为其设置的一部分调用。
如果我的应用程序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:ERROR XmlConfigurator: Failed to find configuration section 'log4net' in the application's .config file.”输出到控制台)。
我做错了什么,还是偶然发现了 log4net 中的错误?
我已经对此进行了广泛的调试。有两种行为:
XmlConfigurator.Configure()
当我跨过它时,呼叫无限期挂起XmlConfigurator.Configure()
可以跳过调用,但随后应用程序似乎挂起。如果我暂停执行并查看活动线程,就会发现有一个卡在 log4net 方法中(类似于ConfigureFromFile
)。
无论哪种方式,它都会挂起整个应用程序。
这是来自挂起线程的堆栈跟踪(在上面的第二种情况下):