-
Notifications
You must be signed in to change notification settings - Fork 16
Open
Description
Hi, I need to dynamically update log4net configuration. ConnectionString update is working fine, but ConnectionType and probably CommandText are not updating. If'll not specify them in log4net.config, there is an error on config read. I need to override them to use different providers based on configuration.
public static class Log4NetAppender
{
public static void Configure(string provider, string connectionString)
{
Hierarchy logHierarchy = LogManager.GetRepository() as Hierarchy;
if (logHierarchy != null)
{
var appender = logHierarchy.GetAppenders()
.OfType<MicroKnights.Logging.AdoNetAppender>()
.SingleOrDefault();
if (appender == null)
throw new InvalidOperationException("Can't locate a database appender");
appender.ConnectionString = connectionString;
if (provider == "Postgres")
{
appender.ConnectionType = "Npgsql.NpgsqlConnection, Npgsql, Version=7.0.4.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7";
appender.CommandText = "INSERT INTO Log (Date,Machine,UserName,Thread,Level,Logger,Message) VALUES (@log_date, @machine, @username, @thread, @log_level, @logger, @message)";
}
else if (provider == "SqlServer")
{
appender.ConnectionType = "Microsoft.Data.SqlClient.SqlConnection, Microsoft.Data.SqlClient, Version=5.0.0.0,Culture=neutral,PublicKeyToken=23ec7fc2d6eaa4a5";
appender.CommandText = "INSERT INTO Log ([Date],[Machine],[UserName],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @machine, @username, @thread, @log_level, @logger, @message)";
}
appender.ReconnectOnError = true;
appender.ActivateOptions();
}
}
}
Metadata
Metadata
Assignees
Labels
No labels