许多类似的问题询问如何在控制台窗口中隐藏sql日志,答案建议更改Active Record的日志级别或完全关闭AR日志记录。
但是我仍然希望AR记录所有内容,我只想将其记录到文件中,而不是记录到控制台输出窗口(因为它使控制台变得嘈杂,所以我看不到我的手动日志)。
我如何实现我的目标?
答案 0 :(得分: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输出的位置。