log4net создает 2 файла журнала вместо ожидаемого, когда log4net настроен как в моей, так и в сторонней dll
У меня есть 2 проекта в моем решении, оба типа библиотеки классов.
- Действия: проект, который содержит действия, написанные с использованием White (среда автоматизации пользовательского интерфейса поверх MS UI Automation)
- Тесты: Проект с тестовыми приборами и методами испытаний, используя 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 для внутренних целей.
Итак, я думаю, ситуация такова:
- У меня есть класс, который инициализирует log4net
- Я начинаю набор светильников
- В тестовом проекте есть класс, который запускает 1-й, который содержит
Log.Info("...")
- файл журнала создан
- текст добавляется до..
- 1-е действие, которое ссылается на типы белых, запускается из проекта испытаний
- На этом этапе создается новый файл
- Я думаю, это происходит из-за того, что внутри White Dlls есть еще один вызов для инициализации log4net, он жестко запрограммирован внутри
Любая идея, как предотвратить расщепление журнала без изменения кода белого (сторонние библиотеки)?
1 ответ
Я решил проблему, просто переименовав файл конфигурации, белый ищет имя log4net.config. Но у меня до сих пор нет ответа - возможно ли как-то принудительно инициализировать log4net и пропустить будущие попытки.