log4net создает 2 файла журнала вместо ожидаемого, когда log4net настроен как в моей, так и в сторонней dll

У меня есть 2 проекта в моем решении, оба типа библиотеки классов.

  1. Действия: проект, который содержит действия, написанные с использованием White (среда автоматизации пользовательского интерфейса поверх MS UI Automation)
  2. Тесты: Проект с тестовыми приборами и методами испытаний, используя MbUnit

Я решил добавить логирование с использованием log4net для обоих проектов. Используемая ниже конфигурация log4net:

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file type="log4net.Util.PatternString"
          value="c:/AutomationLog/Automation_%date{dd.MM.yy_HH.mm.ss}.log" />
    <appendToFile value="false" />
    <rollingStyle value="Once" />
    <maxSizeRollBackups value="-1" />
    <maximumFileSize value="10MB" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5level %date{HH:mm:ss,fff} %logger - %message%newline" />
    </layout>
  </appender>
  <root>
    <level value="ALL" />
    <appender-ref ref="RollingLogFileAppender" />
  </root>
  <logger name="root">
    <level value="OFF" />
  </logger>
</log4net>

Мне бы хотелось, чтобы один прогон создавался при каждом запуске (по одному на каждый прогон комплекта приборов). Но два файла созданы:

Automation_27.01.13_07.33.53.log

Automation_27.01.13_07.33.53.log.1

После исследования я обнаружил, что журнал разбивается на 2-й файл каждый раз в одном и том же месте - когда действия содержат типы из Белого. Похоже, это происходит из-за того, что белые также используют log4net для внутренних целей.

Итак, я думаю, ситуация такова:

  1. У меня есть класс, который инициализирует log4net
  2. Я начинаю набор светильников
  3. В тестовом проекте есть класс, который запускает 1-й, который содержит Log.Info("...")
  4. файл журнала создан
  5. текст добавляется до..
  6. 1-е действие, которое ссылается на типы белых, запускается из проекта испытаний
  7. На этом этапе создается новый файл
  8. Я думаю, это происходит из-за того, что внутри White Dlls есть еще один вызов для инициализации log4net, он жестко запрограммирован внутри

Любая идея, как предотвратить расщепление журнала без изменения кода белого (сторонние библиотеки)?

1 ответ

Я решил проблему, просто переименовав файл конфигурации, белый ищет имя log4net.config. Но у меня до сих пор нет ответа - возможно ли как-то принудительно инициализировать log4net и пропустить будущие попытки.

Другие вопросы по тегам