I want to use a ConnectionString that I will define during runtime. I found alot of example, but I can't make it work.
I created a custom AdoNetAppender:
public class AdoNetMultiTenantAppender : AdoNetAppender
{
public new string ConnectionString
{
get
{
return base.ConnectionString;
}
set
{
base.ConnectionString = Tenant.Current.DataSource.ConnectionString; // Return the connection string
}
}
}
I have the following configuration:
<appender name="AdoNetMultiTenantAppender" type="MyNameSpace.AdoNetMultiTenantAppender">
<bufferSize value="1" />
<connectionstring value="" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<commandText value="[...]" />
<parameter>
[...]
</parameter>
</appender>
my logger is define like this in the config file:
<logger name="ProcessLogger" additivity="false">
<level value="INFO"/>
<appender-ref ref="AdoNetMultiTenantAppender"/>
</logger>
And finally, to get my Logger on my code i'm doing:
[...]
private static readonly ILog Logger = LogManager.GetLogger("ProcessLogger");
[...]
ProcessLogger.Logger.Info(message);
[...]
When i'm trying to "hard code" the Connection string into my config it's working. But I can't do this because I need a different ConnectionString depending on some variables. The property ConnectionString that I put in my custom appender is just never call. Any idea where i'm missing something?