Как получить рельсы.печать регистратора на консоль / stdout при запуске rspec?
то же, что и название: Как получить Rails.logger
печать на консоль / stdout при запуске rspec? Например.
Rails.logger.info "I WANT this to go to console/stdout when rspec is running"
puts "Like how the puts function works"
Я еще хочу!--1--> перейти к log/test.log
тоже.
5 ответов:
для рельсов 4 см. этот ответ.
Для Рельсов 3.x, настроить регистратор в
config/environments/test.rb
:config.logger = Logger.new(STDOUT) config.logger.level = Logger::ERROR
это будет чередовать любые ошибки, которые регистрируются во время тестирования в STDOUT. Вы можете направить вывод на STDERR или использовать другой уровень журнала вместо этого.
отправка этих сообщений в консоль и файл журнала требует чего-то более надежного, чем встроенный Ruby регистратор класса. Этот лесозаготовки камень будет делать то, что вы хотите. Добавьте его в свой
Gemfile
, затем установите два приложения вconfig/environments/test.rb
:logger = Logging.logger['test'] logger.add_appenders( Logging.appenders.stdout, Logging.appenders.file('example.log') ) logger.level = :info config.logger = logger
Для Рельсов 4.x уровень журнала настроен немного иначе, чем в Rails 3.x
добавить в
config/environment/test.rb
# Enable stdout logger config.logger = Logger.new(STDOUT) # Set log level config.log_level = :ERROR
уровень регистратора устанавливается на экземпляре регистратора из
config.log_level
at: https://github.com/rails/rails/blob/v4.2.4/railties/lib/rails/application/bootstrap.rb#L70переменные среды
в качестве бонуса вы можете разрешить перезапись уровня журнала с помощью переменной среды по умолчанию значение вроде так:
# default :ERROR config.log_level = ENV.fetch("LOG_LEVEL", "ERROR")
и затем запуск тестов из консоли:
# Log level :INFO (the value is uppercased in bootstrap.rb) $ LOG_LEVEL=info rake test # Log level :ERROR $ rake test
хвост журнала как фоновое задание ( & ) и он будет чередоваться с выходом rspec.
tail -f log/test.log & bundle exec rspec
решение, которое мне нравится, потому что оно сохраняет выход rspec отдельно от фактического выхода журнала rails, заключается в следующем:
- откройте второе окно терминала или вкладку и расположите его так, чтобы вы могли видеть как основной терминал, на котором вы запускаете rspec, так и новый.
- запустите хвостовую команду во втором окне, чтобы вы увидели журнал rails в тестовой среде. По умолчанию это может быть как
$ tail -f $RAILS_APP_DIR/logs/test.log
илиtail -f $RAILS_APP_DIR\logs\test.log
для пользователей окно- выполнить ваши для RSpec люксы
если вы используете многопанельный терминал, такой как iTerm, это становится еще более увлекательным, и у вас есть
rspec
иtest.log
выходной стороны на сторону.