Ruby on rails Rails 2.3单独记录所有数据库查询

Ruby on rails Rails 2.3单独记录所有数据库查询,ruby-on-rails,Ruby On Rails,接下来,我将尝试记录所有生成的查询。我试着把它放在一个初始值设定项中,也只是直接在控制台中运行它,而execute似乎永远不会被执行 我尝试了以下方法: connection = ActiveRecord::Base.connection class << connection alias :original_exec :execute def execute(sql, *name) # try to log sql command but ignore any er

接下来,我将尝试记录所有生成的查询。我试着把它放在一个初始值设定项中,也只是直接在控制台中运行它,而execute似乎永远不会被执行

我尝试了以下方法:

connection = ActiveRecord::Base.connection
class << connection
  alias :original_exec :execute
  def execute(sql, *name)
    # try to log sql command but ignore any errors that occur in this block
    # we log before executing, in case the execution raises an error
    raise "THROW AN ERROR"
    begin
        file = File.open(RAILS_ROOT + "/log/sql.txt",'a'){|f| f.puts Time.now.to_s+": "+sql}
    rescue Exception => e
      ;
    end
    # execute original statement
    original_exec(sql, *name)
  end
end

我仍然没有得到任何错误

您不需要使用monkey-patch-ActiveRecord来获取日志记录(无论如何,您在这里做得不正确)。我假设您希望在生产中使用此功能,因为在开发中,所有查询都已记录。只需在
config/environments/production.rb
中设置:

config.log_level = :debug
或者,如果要将此限制为仅SQL查询,而不包含其他详细信息,请尝试以下操作:

ActiveRecord::Base.logger.level = Logger::DEBUG
或者,如果您的目标是将SQL查询写入专用日志文件,请检查以下问题:

ActiveRecord::Base.logger.level = Logger::DEBUG