Log4NET AdoNetAppender connection string reference

后端 未结 1 424
清酒与你
清酒与你 2020-12-21 02:49

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

1条回答
  •  Happy的楠姐
    2020-12-21 03:32

    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();
       }
    }
    

    0 讨论(0)
提交回复
热议问题