【问题标题】:Ruby on Rails SQL LoggingRuby on Rails SQL 日志记录
【发布时间】:2014-02-17 08:52:27
【问题描述】:

是否可以在 Ruby on Rails 中仅记录生成的 SQL 命令 并将其保存在单独的文件中?

我仍处于开发模式,并希望将所有 SQL 命令保存在单独的日志中。

我检查了 development.log 文件,但它们也保存数据,如

"Started GET "/assets/application.css" for 127.0.0.1 at 2014-02-17 16:41:47 +0800, etc.

我希望为 SQL 创建一个单独的日志文件,或者删除这些其他行,只留下 SQL 命令。

这可能吗?谢谢你。

【问题讨论】:

标签: ruby-on-rails logging


【解决方案1】:

如果你使用活动记录,你可以覆盖活动记录记录器:

ActiveRecord::Base.logger = Logger.new("#{Rails.root}/log/sql_log.log")

【讨论】:

  • 我不确定如何实现。您能否详细说明我需要在何处添加此行?
  • 哦,我把它添加到了 development.rb 中,它可以工作了!谢谢你无畏!
  • 关于 sql 日志记录,似乎 SQL 日志已传输到 sql_log.log 但您如何在 2014-02 包含例如 127.0.0.1 的“Started GET”/controller/index” -17 08:50:45 +0800 连接到由 database.yml' 指定的数据库,它位于 SQL 命令之前,因为这将包括 SQL 命令执行的日期和时间。
  • 我建议您创建自己的记录器类(使其继承自记录器)并覆盖add 方法以包含时间。更多信息:ruby-doc.org/stdlib-1.9.3/libdoc/logger/rdoc/…