使用Rails 4在日志中显示SQL查询

时间:2014-04-30 20:21:19

标签: sql ruby-on-rails ruby-on-rails-4

我在Ubuntu 14.04上通过我的终端“终结者”和我的shell“Fish Shell”在Ruby 2.1和Thin 1.6.2上使用Rails 4.0.4。

当我在开发模式下启动Rails服务器时,我的日志中没有SQL查询,只加载了JS和HTML文件。

我正在寻找类似的东西:

User Load (3.0ms)  SELECT "users".* FROM "users" WHERE "users"."id" = 3 ORDER BY "users"."id" ASC LIMIT 1
(2.0ms)  SELECT COUNT(*) FROM "users" WHERE (driver_register_state_cd = -2)

3 个答案:

答案 0 :(得分:25)

rails控制台永远不会写入日志文件,但您可以非常轻松地实现它,例如,如果您在启动rails控制台后执行以下操作

ActiveRecord::Base.logger = Logger.new STDOUT

rails会将所有SQL语句记录到stdout,从而在终端中显示它们。由于Logger.new接受任何流作为第一个参数,你可以让它写入rails development.log:

ActiveRecord::Base.logger = Logger.new File.open('log/development.log', 'a')

答案 1 :(得分:4)

我通过创建初始化文件得到了我想要的东西:

# initializers/sql_logging.rb
ActiveRecord::Base.logger = ActiveSupport::Logger.new(STDOUT)

这似乎也可以防止日志记录中出现丑陋的时间戳。

答案 2 :(得分:3)

将config / environments / development.rb中的config.log_level设置为:debug并重启本地服务器,控制台:

 config.log_level = :debug