2014-01-03 3 views
3

Я запускаю некоторые модульные тесты, и я бы хотел, чтобы log4net записывал все в Консоль (только для проверки). После руководства, я использовал:Настройка log4net в модульных тестах для входа в консоль и отображения правильной даты и времени

BasicConfigurator.Configure(); 

Однако, это создает шаблон ведения журнала %-4timestamp [%thread] %-5level %logger %ndc - %message%newline. Как я могу изменить его так, чтобы вместо метки времени я получал обычную дату и время (до полусекунд)?

+0

Просто добавьте 'App.config' в свой тестовый проект и определите, какой шаблон вам нужен. –

ответ

3

Вы можете получить ConsoleAppender из репозитория регистратора и изменить его расположение:

BasicConfigurator.Configure(); 
var appender = LogManager.GetRepository() 
         .GetAppenders() 
         .OfType<ConsoleAppender>() 
         .First(); 

appender.Layout = new PatternLayout("%d %-5level %logger - %m%n"); // set pattern 
ILog logger = LogManager.GetLogger(logger_name); // obtain logger 

Но конфигурация с помощью конфигурационного файла предпочтительного способа, так как вы можете изменить настройки без перекомпиляции тесты.

+0

Я понимаю обоснование использования файлов конфигурации в целом, и я являюсь огромным поклонником модульного тестирования, но я честно пытаюсь увидеть пример использования для запуска модульных тестов без перекомпиляции. В каких обстоятельствах вы, или, действительно, можете ли вы - выполнить свои модульные тесты без перекомпиляции, но изменив файлы конфигурации? Возможно, я что-то пропустил, но я не вижу модульные тесты как статические двоичные файлы, которые вы повторно запускаете с изменением конфигурации, скорее они больше похожи на динамические объекты, которые действительно _rely_ при перестройке, чтобы убедиться, что они все еще действительны. – stuartd

+0

@stuartd согласен, с модульными тестами с изменением кода и перекомпиляцией действительно неважно. Единственный случай, который я могу себе представить, - запустить модульные тесты на каком-то инструменте непрерывной интеграции, таком как Jenkins. QA может перейти на сервер и изменить настройки в файле конфигурации без изменения кода. Но в данном конкретном случае я согласен, конфигурационный файл не имеет никаких преимуществ –