Отключение регистрации в Rails из скрипта / бегуна - PullRequest
10 голосов
/ 03 июня 2009

Есть ли какой-нибудь способ отключить все журналы (будь то из ActiveRecord, других частей Rails, плагинов и т. Д.) Из скрипта, работающего через script/runner? У меня запущен длинный скрипт загрузки данных, который генерирует абсурдное количество бесполезной информации в журналах. Я не пытаюсь изменить среду script/runner (например, производство, разработку и т. Д.) - в настоящее время сценарий должен работать в среде "разработки", и он делает это без проблем в момент

Все, что я хочу сделать, это подавить все записи в журнале на время существования сценария. Из чтения документов похоже, что если я смогу получить дескриптор для Rails::Configuration, я смогу либо установить log_level в значение, отличное от :debug, либо установить logger в nil. Я на правильном пути? Если так, как я могу получить доступ к его Rails::Configuration объекту?

Ответы [ 2 ]

30 голосов
/ 04 июня 2009

Есть несколько способов, которые я могу придумать.

1) Установите уровень регистрации таким высоким, чтобы ничего не регистрировалось:

ActiveRecord::Base.logger.level = Logger::Severity::UNKNOWN

Подробнее об этом см. Logger :: Severity . НЕИЗВЕСТНЫЙ самый высокий.

«уровень» - это просто число, поэтому его можно установить в Logger :: Severity :: UNKNOWN + 1, если вы чувствуете себя параноиком. :)

2) Отправьте вывод в /dev/null.

.
ActiveRecord::Base.logger = Logger.new('/dev/null')

(Я предполагаю, что существует только один экземпляр Logger, который используется Rails, и тот, который вы получаете через ActiveRecord :: Base.logger. Если их будет больше, вам придется их найти и возиться с ними тоже.)

Если вам это не нравится, вы можете найти что-то еще, прочитав Logger документы.

0 голосов
/ 03 июня 2009

Настройки находятся в ваших файлах config / environment / *. Rb, которые переопределяют значение по умолчанию для environment.rb. Когда это делает "Rails :: Initializer.run do | config |" он работает с объектом конфигурации. Я вполне уверен, что вы можете изменить любой из них в соответствии со своими потребностями, но я не уверен, как вы передадите ему флаг, говоря, что это скрипт сценария / бегуна, выполняемый в настоящее время.

(я знаю, что вы сказали, что вы не заинтересованы в изменении среды, но я подумал, что вы можете создать новый env для сценария загрузки данных, который имеет большинство тех же настроек, но без регистрации довольно легко)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...