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

4

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

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

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

Ваш Ответ

1   ответ
6

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

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

Есть пример вэтот ответ.

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

Вы вызываете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();
   }
}
Отлично, спасибо за тонну !!! Спасли нашу жизнь :) Joe

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