Вопрос по c#, .net, web-config, log4net – Ссылка на строку подключения Log4NET AdoNetAppender

4

Я хочу использовать Log4NET для входа в мою БД и, следуя некоторым учебникам, я вижу, что мне нужно настроить строку подключения для приложения DAO.

У меня уже есть строка подключения в моем web.config для подключения к БД, поэтому яМне интересно, могу ли я сослаться на это вместо установки нового.

Я обычно меняю строку подключения, чтобы переключиться с dev DB на производственную базу данных, поэтому было бы очень полезно использовать одни и те же параметры подключения.

Ваш Ответ

1   ответ
6

так как это было опубликовано, log4net теперь поддерживает указание строки подключенияназвание в конфиге. Отhttps://issues.apache.org/jira/browse/LOG4NET-88 -

Это добавляет новыйconnectionStringName» Атрибут (и соответствующее ConnectionStringName) свойство класса AdoNetAppender. Это ссылка на строку подключения в раздел файла App.config или Web.config.

Там'пример вэтот ответ

Если вы нене иметь строку подключения, определенную в Затем вы можете установить строку подключения во время выполнения, используя этот класс:

Вы вызываетеSetConnectionString со строкой подключения сразу после васнастроил log4net.

Однако есть пара вещей, которые я бы отметил:

Приложение базы данных Log4net нене нравится, когда создается без строки подключения, и выдает (внутреннюю) ошибку - и во время модульного тестирования яУвиденные тесты занимают более 10 секунд, когда выдается поддельная строка соединения.

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<adonetappender>()
                                   .SingleOrDefault();

        if (appender == null)
        {
            throw new InvalidOperationException
              ("Can't locate a database appender");
        }

        appender.ConnectionString = connectionString;
        appender.ActivateOptions();
   }
}
</adonetappender>
Отлично, спасибо за тонну !!! Спасли нашу жизнь :) Joe

Похожие вопросы