Setting a log4net AdoNetAppender Connection String at Runtime

I recently implemented log4net in a project to log to a database using the log4net AdoNetAppender class. But I had a need to be able to specify the connection string at runtime. Here's how I was able to do it. Hopefully this will help out someone who has the same need. :)

protected void SetLog4NetAppenderConnectionString(string connectionString)
{
    log4net.Repository.Hierarchy.Hierarchy hierarchy =
        log4net.LogManager.GetLoggerRepository() 
            as log4net.Repository.Hierarchy.Hierarchy;
 
    if (hierarchy != null)
    {
        log4net.Appender.AdoNetAppender appender
            = (log4net.Appender.AdoNetAppender)hierarchy.GetAppenders()
                .Where(x => x.GetType() == 
                    typeof(log4net.Appender.AdoNetAppender))
                .FirstOrDefault();
 
        if (appender != null)
        {
            appender.ConnectionString = connectionString;
            appender.ActivateOptions();
        }
    }
}

Comments

Popular posts from this blog

A Generic Method Using HttpClient to Make a Synchronous Get Request

The Cause and Solution for the "System.Runtime.Serialization.InvalidDataContractException: Type 'System.Threading.Tasks.Task`1[YourTypeHere]' cannot be serialized." Exception

"$.ajax is not a function" Error When Using jQuery and Darren Johnstone's ASP.NET Upload/Download Module v2