小编典典

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

sql

我想将一些SQL查询轨道执行的操作保存到日志文件中(即CREATE,UPDATE和DELETE),因此我需要拦截所有查询,然后使用一些正则表达式过滤它们并根据需要记录它们。

我会在Rails代码中的哪儿放这样的东西?


阅读 71

收藏
2021-04-28

共1个答案

小编典典

这里是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
2021-04-28