【问题标题】:Display SQL queries in log with Rails 4使用 Rails 4 在日志中显示 SQL 查询
【发布时间】:2014-04-30 20:21:19
【问题描述】:

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

当我在开发模式下启动 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)

【问题讨论】:

  • 默认情况下,在生产模式下启动 rails 时您不会看到它。尝试在开发模式下启动它。

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


【解决方案1】:

rails 控制台从不写入日志文件,但您可以很容易地实现它,例如,如果您在启动 rails 控制台后执行以下操作

ActiveRecord::Base.logger = Logger.new STDOUT

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

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

【讨论】:

  • 我忘了提到我已经处于开发模式... gem 可以使查询在日志中消失吗?因为我没有接触环境配置文件...
  • 你希望rails在哪里显示SQL查询?在您的本地桌面或服务器中?如果是,那么是哪个服务器?
  • 我已经更新了答案,请关注。如果解决了您的问题,请勾选标记
  • 谢谢杰克!就是这样!
  • 它不能解决我的问题..即使按照你告诉的 sql 查询仍然没有显示..
【解决方案2】:

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

 config.log_level = :debug

【讨论】:

  • 开发模式下默认的日志级别是:debug。所以这个条目不会改变任何东西,
【解决方案3】:

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

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

这似乎也可以防止日志记录在前面加上丑陋的时间戳。

【讨论】:

    猜你喜欢
    • 2011-05-01
    • 2010-09-21
    • 2017-04-29
    • 2011-04-20
    • 2014-04-19
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多