我有一個應用程序(自主託管ASP.Net WebAPI的控制檯應用程序)作爲其設置的一部分調用XmlConfigurator.Configure()
。如果我的配置文件缺少log4net配置節,爲什麼我的應用程序會掛起?
它工作正常,如果我的應用程序的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:無法在應用程序的.config文件中找到配置節'log4net'」輸出到控制檯)。
我做錯了什麼,或者我偶然發現了log4net中的一個錯誤?
我已經對此進行了廣泛的調試。有兩種行爲:
- 調用
XmlConfigurator.Configure()
無限期掛起,當我跨過它 - 調用
XmlConfigurator.Configure()
能跨過,但隨後的應用似乎掛起。如果我暫停執行並查看活動線程,則有一個卡在log4net方法中(類似ConfigureFromFile
)。
無論哪種方式,它掛起了整個應用程序。
下面是從掛起線程的堆棧跟蹤(在上面的第二種情況):
如果單步執行代碼會發生什麼? – Default
它可能不是log4net中的錯誤,它可能是MS配置解析器。 –
您同意這是一個錯誤。在這種情況下,它可能會彈出一些靜態構造函數,不可能讓你捕捉。 –