当连接字符串不正确时,Log4Net XmlConfigurator.Configure()会挂起。 Log4Net中的错误?

时间:2014-08-15 20:43:32

标签: debugging log4net log4net-configuration

我花了很长时间来追踪Log4Net配置问题,其中数据库连接字符串不正确,因为在代码中调用XmlConfigurator.Configure()时,而不是抛出异常它只是挂起。

如果我已经意识到它会立即挂在特定的代码行上,那么很容易弄明白,但是我正在调用一个使用log4net的行为的wcf服务,当然它在开发环境但不在登台环境中,因此需要更长时间才能跟踪。

它真的困扰我,它只是挂起而不是抛出一个关于登录不工作的例外。这是log4net中的某种错误吗?

1 个答案:

答案 0 :(得分:2)

不,这不是错误,而是documented behaviour

  

log4net是尽力而为的故障停止日志记录系统。

     

通过失败停止,我们的意思是log4net不会引发意外   运行时的异常可能导致应用程序崩溃。   如果由于任何原因,log4net抛出未捕获的异常,请发送   发送电子邮件至log4net-users@lists.sourceforge.net邮件列表。   未捕获的异常被视为需要立即执行的严重错误   注意。

如果您想检查配置是否有效,the documentation suggests code like this

  

为了防止log4net的静默失败,log4net支持一种方法   评估它是否已配置,还评估生成的消息   从1.2.11开始启动。检查log4net是否已启动和   配置正确,可以检查属性   log4net.Repository.ILoggerRepository.Configured并枚举   配置消息如下:

if(!log4net.LogManager.GetRepository().Configured)
{
    // log4net not configured
    foreach(log4net.Util.LogLog message in 
             log4net.LogManager.GetRepository()
                    .ConfigurationMessages
                    .Cast<log4net.Util.LogLog())
    {
        // evaluate configuration message
    }
}