Can you pull the connectionString for a log4net AdoNetAppender from elsewhere in a web.config file? Can you pull the connectionString for a log4net AdoNetAppender from elsewhere in a web.config file? asp.net asp.net

Can you pull the connectionString for a log4net AdoNetAppender from elsewhere in a web.config file?


It is possible to use a DB connection string specified in web.config without creating a new class, though you would need to use log4net build that hasn't been released yet. It can be downloaded from SVN repository http://svn.apache.org/viewvc/logging/log4net/trunk/

Your config will look as follows:

<connectionStrings>    <add name="connStr" connectionString="Data Source=localhost; ..." /></connectionStrings><log4net>    <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">    <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />    <connectionStringName value="connStr" />      ...</log4net>

Please note that connectionType still needs to be specified.


Create a class that extends AdoNetAppender - say, WebAppAdoNetAppender. Implement the ConnectionString property in that class, and retrieve the connection string from your web.config file in that property setter.

<log4net>    <appender name="AdoNetAppender" type="MyApp.WebAppAdoNetAppender">    ...

...

public class WebAppAdoNetAppender : log4net.Appender.AdoNetAppender{    public new string ConnectionString    {        get { return base.ConnectionString; }        set { base.ConnectionString = ...   }    }}


fyi this will be implemented in 1.2.11 according to this. however I have no idea when they are going to release it.