【发布时间】:2015-07-23 05:28:07
【问题描述】:
很多类似的问题询问如何在控制台窗口中隐藏 sql 日志,答案建议更改 Active Record 的日志级别或完全关闭 AR 日志记录。
但是我仍然希望 AR 记录所有内容,我只想将其记录到文件中,而不是记录到控制台输出窗口(因为它使控制台变得嘈杂,所以我看不到我的手动日志)。
我如何实现我想要的?
【问题讨论】:
标签: ruby-on-rails-4 activerecord logging rails-console
很多类似的问题询问如何在控制台窗口中隐藏 sql 日志,答案建议更改 Active Record 的日志级别或完全关闭 AR 日志记录。
但是我仍然希望 AR 记录所有内容,我只想将其记录到文件中,而不是记录到控制台输出窗口(因为它使控制台变得嘈杂,所以我看不到我的手动日志)。
我如何实现我想要的?
【问题讨论】:
标签: ruby-on-rails-4 activerecord logging rails-console
这个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 输出的任何位置。
【讨论】: