Ошибка log4net в NUnit: «Попытка добавить в закрытый аппендер с именем [].» - PullRequest
2 голосов
/ 05 ноября 2010

Когда я запускаю некоторые интеграционные тесты через NUnit, все работает, включая ведение журнала. Когда я запускаю любой тест во второй раз , исключение не выдается, но регистрация перестает работать. Вместо этого log4net записывает это в консоль:

log4net:ERROR [TextWriterAppender] Attempted to append to closed appender named [].

Вот конфигурация log4net:

  <log4net debug="true" >
    <appender name="console"
          type="log4net.Appender.ConsoleAppender, log4net">
      <layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern"
             value="%d{ABSOLUTE} %-5p %c{1}:%L - %m%n" />
      </layout>
    </appender>

    <root>
      <priority value="DEBUG" />
      <appender-ref ref="console" />
    </root>

    <logger name="NHibernate">
      <level value="WARN" />
    </logger>

    <logger name="NHibernate.SQL" >
      <level value="DEBUG" />
    </logger>
  </log4net>

Код установки находится в статическом конструкторе в SUT:

log4net.Config.XmlConfigurator.Configure();

Мне удалось получить ту же ошибку с множеством других настроек приложения. Что вызывает эту ошибку? Я хочу знать, в чем причина, поэтому я знаю, как это исправить, а также как воспроизвести это в производственном сценарии (если это возможно), чтобы я мог предотвратить его появление в рабочем коде.

Я использую NHibernate 2.0.1.GA и прилагаемую к нему версию log4net (1.2.10.0).

1 Ответ

2 голосов
/ 21 октября 2011

Что ж, если вы посмотрите на ошибку, в которой говорится [TextWriterAppender], это означает, что log4net пытается добавить сообщение журнала в TextWriter, тогда как в предоставленной вами конфигурации нет.

Либо есть другой файл конфигурации с загруженным тегом log4net, либо в коде, который вы где-либо вызываете LogManager.Shutdown ()

...