I want to use Log4NET to log into my DB and following some tutorials I see that I have to configure a connection string for the DAO appender.
I already have a connec
Edit: since this was posted, log4net now supports specifying the connection string name in the config. From https://issues.apache.org/jira/browse/LOG4NET-88 -
This adds a new "connectionStringName" attribute (and corresponding ConnectionStringName) property to the AdoNetAppender class. This is a reference to a connection string within the
section of an App.config or Web.config file.
There's an example in this answer.
If you don't have the connection string defined in the section then you can set the connection string at runtime using this class:
You invoke SetConnectionString with the connection string just after you've configured log4net.
However, there are a couple of things I would note:
Log4net database appenders don't like being created without a connection string, and throw an (internal) error - and during unit testing, I've seen tests take more than 10 seconds when given a fake connection string.
public static class LogConfigurator
{
public static void SetConnectionString(string connectionString)
{
Hierarchy logHierarchy = log4net.LogManager.GetRepository() as Hierarchy;
if (logHierarchy == null)
{
throw new InvalidOperationException
("Can't set connection string as hierarchy is null.");
}
var appender = logHierarchy.GetAppenders()
.OfType()
.SingleOrDefault();
if (appender == null)
{
throw new InvalidOperationException
("Can't locate a database appender");
}
appender.ConnectionString = connectionString;
appender.ActivateOptions();
}
}