log4net Configure()尝试在设置connString之前建立SQL连接

时间:2017-05-08 21:05:32

标签: c# asp.net-web-api log4net

我正在动态配置AdoNetAppender的连接字符串。

我遇到的问题是,log4net.Config.XmlConfigurator.Configure();正在尝试建立与数据库的连接,但是直到以下行(ConfigureLog4Net(logConnString);

的Global.asax.cs

protected void Application_Start()
{
    // Other configuration

    // Configure logging
    var logConnString = ConfigurationManager.ConnectionStrings["LoggingConnection"].ToString();

    if (logConnString != null)
    {
        log4net.Config.XmlConfigurator.Configure();
        ConfigureLog4Net(logConnString);
    }
}

private void ConfigureLog4Net(string logConnString)
{
    Hierarchy hierarchy = LogManager.GetRepository() as Hierarchy;
    if (hierarchy != null && hierarchy.Configured)
    {
        foreach (IAppender appender in hierarchy.GetAppenders())
        {
            if (appender is AdoNetAppender)
            {
                var adoNetAppender = (AdoNetAppender)appender;
                adoNetAppender.ConnectionString = logConnString;
                adoNetAppender.ActivateOptions(); //Refresh AdoNetAppenders Settings
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您可以配置log4net以从ConnectionStrings获取值,而不是将连接字符串本身添加到log4net配置中。而不是connectionString add:

<connectionStringName value="LoggingConnection" />