2015-05-12 6 views
1

Многие аналогичные вопросы задают вопрос о том, как скрыть журналы sql в окне консоли, а ответы предлагают изменить уровень журнала Active Record или вообще отключить AR-протоколирование.В консоли 4 рельсов, как мне записать всю активность sql в файл, но не на вывод консоли?

Однако я все еще хочу, чтобы AR регистрировала все, я просто хотел зарегистрировать его только в файле, а не в окне вывода консоли (поскольку это делает консоль шумной, поэтому я не могу видеть мои журналы вручную).

Как достичь того, что я хочу?

ответ

2

Этот ActiveRecord::Railtie код, что говорит вещать регистратора сообщений на консоль:

# When loading console, force ActiveRecord::Base to be loaded 
# to avoid cross references when loading a constant for the 
# first time. Also, make it output to STDERR. 
console do |app| 
    require "active_record/railties/console_sandbox" if app.sandbox? 
    require "active_record/base" 
    console = ActiveSupport::Logger.new(STDERR) 
    Rails.logger.extend ActiveSupport::Logger.broadcast console 
end 

Так одна вещь, которую вы могли бы сделать, когда вы первый попасть в консоль, чтобы установить ActiveRecord::Base.logger к новому регистратору, который не транслируется его сообщения на консоль. Например:

ActiveRecord::Base.logger = ActiveSupport::Logger.new("log/development.log") 

«log/development.log» можно изменить везде, куда вы хотите отправить выход SQL.

 Смежные вопросы

  • Нет связанных вопросов^_^