作为此post的后续内容:我正在尝试记录正在生成的所有查询。我已经尝试将它放在初始化程序中,并且直接在控制台中运行它并且执行似乎永远不会被执行。
我尝试了以下内容:
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
然后运行
Person.last
我仍然没有错误。
答案 0 :(得分:0)
你不需要修补ActiveRecord以获取日志记录(无论如何你在这里做错了)。我假设您希望在生产中使用此功能,因为在开发过程中,所有查询都已记录。只需在config/environments/production.rb
:
config.log_level = :debug
或者,如果您只想将此限制为SQL查询,而没有其他详细程度,请尝试以下方法:
ActiveRecord::Base.logger.level = Logger::DEBUG
或者,如果您的目标是将SQL查询写入专用日志文件,请查看以下问题:Rails3 SQL logging output in a separate file