Как отключить ведение журнала для задачи рейка?
У меня есть задача rake, которая запускается как задание cron один раз в день. Он выполняет некоторое обслуживание модели, в которой в настоящее время имеется 57k + записей. Это добавляет сотни тысяч строк в журнал каждый раз, когда задача выполняется для любой среды, в которой он сейчас находится. (В настоящее время он находится только в разработке.)
Как отключить ведение журнала для определенной задачи или группы задач, но оставить остальную часть протокола для остальной части приложения и оставить ее в покое для модели/методов, вызываемых из задачи?
Ответы
Ответ 1
Регистратор Rails является объектом ActiveSupport::BufferedLogger
, но может быть переназначен любому другому типу объекта Logger
(или любому объекту, который отвечает на методы Logger
), который вы хотите, включая что-то вроде этого:
dev_null = Logger.new("/dev/null")
Rails.logger = dev_null
ActiveRecord::Base.logger = dev_null
Поместите эти строки в начало вашей задачи Rake, и все выходные данные журнала будут недорого отправлены на /dev/null
, что лучше всего объяснить его статьей Wikipedia.
Ответ 2
Если у вас есть задание cron, вы можете перенаправить вывод в /dev/null, например:
* * * * * rake whatever_task_blah_blah > /dev/null 2>&1
Ответ 3
Вы можете добавить это в начало задачи:
ActiveRecord::Base.logger.level = 2