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



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

如果我意识到它挂在特定的代码行上,那么很快就会发现它,但是我调用了一个使用log4net行为的wcf服务,当然它在开发环境中是正确配置的,但在staging环境中不是,所以需要更长的时间来跟踪。

它真的让我很困扰,它只是挂起,而不是抛出一个关于登录不工作的异常。这是log4net的某种bug吗?

不,这不是一个bug,这是记录的行为:

log4net是一个尽最大努力和故障停止的日志系统。

通过fail-stop,我们的意思是log4net不会抛出意外的错误运行时的异常可能导致应用程序崩溃。如果由于任何原因,log4net抛出了一个未捕获的异常,请发送发邮件到log4net-users@lists.sourceforge.net邮件列表。未捕获的异常作为需要立即处理的严重错误处理注意。

如果你想检查你的配置是否有效,文档建议这样写:

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

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
    }
}

最新更新