将每个SQL查询记录到Rails中的数据库

luc*_*uca 13 ruby sql logging ruby-on-rails

我想保存一些SQL查询rails执行的日志文件(即CREATE,UPDATE和DELETE),因此我需要拦截所有查询,然后使用一些regexp过滤它们并根据需要记录它们.

我会把这样的东西放在rails代码中?

luc*_*uca 15

这里是c0r0ner链接到的简化版本,以便更好地显示它:

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
    begin
        File.open(Rails.root.join("/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
Run Code Online (Sandbox Code Playgroud)


Sig*_*urd 6

在rails中记录SQL - 简而言之 - 您需要覆盖ActiveRecord execute方法.在那里,您可以添加任何记录逻辑.

  • 并且记住不要自己拦截日志记录查询,否则你将获得无限循环...... (4认同)
  • 404 未找到。链接丢失 (2认同)