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

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

How to Get Norton Security Suite Firewall to Allow Remote Desktop Connections in Windows

How to Determine if a Column Exists in a DataReader

Resolving the "n timer(s) still in the queue" Error In Angular Unit Tests

Setting Default Values in an Angular Reactive Form