Как отключить ведение журнала для граблей? - PullRequest
19 голосов
/ 26 апреля 2011

У меня есть рейк-задание, которое запускается как задание cron один раз в день.Он выполняет некоторые операции с моделью, в которой на данный момент записано более 57 тыс. Записей.Это добавляет сотни тысяч строк в журнал каждый раз, когда задача запускается для любой среды, в которой она находится в данный момент. (В настоящее время она только находится в разработке.)

Как отключить ведение журнала для конкретной задачи или группызадач, но оставить журналирование в покое для остальной части приложения и оставить его в покое для модели / методов, вызываемых из задачи?

Ответы [ 3 ]

31 голосов
/ 26 апреля 2011

Регистратор Rails является объектом ActiveSupport::BufferedLogger, но его можно переназначить любому другому типу объекта Logger (или любому объекту, который реагирует на методы Logger), который вы пожелаете, включая что-то вроде этого:

dev_null = Logger.new("/dev/null")
Rails.logger = dev_null
ActiveRecord::Base.logger = dev_null

Поместите эти строки в начало вашей задачи Rake, и все выходные данные журналов будут недорого отправлены на /dev/null, что лучше всего объясняется в статье Wikipedia .

3 голосов
/ 04 февраля 2013

Вы можете добавить это в начало задания:

ActiveRecord::Base.logger.level = 2
3 голосов
/ 26 апреля 2011

Если у вас есть задание cron, вы можете перенаправить вывод в / dev / null, например:

* * * * * rake whatever_task_blah_blah > /dev/null 2>&1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...