You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails生产环境日志如何输出数据库查询SQL及执行时间?

解决Rails生产环境输出详细SQL查询及执行时间的问题

没问题,我帮你搞定这个问题——要在生产日志里输出像开发控制台那样的详细SQL语句(包括执行时间、绑定参数),其实只需要调整Rails的环境配置就行,下面是具体步骤:

一、修改生产环境配置文件

Rails默认在生产环境下会简化日志输出,只统计总ActiveRecord耗时,我们需要打开详细查询日志的开关:

  1. 打开config/environments/production.rb文件
  2. 添加或修改以下配置:
# 临时将日志级别调到debug(排查完成后记得改回:info,避免日志量过大)
config.log_level = :debug

# 开启ActiveRecord详细查询日志,会输出每条SQL的执行时间、绑定参数
config.active_record.verbose_query_logs = true

# 确保ActiveRecord的日志输出到应用主日志(有些环境可能需要单独指定)
ActiveRecord::Base.logger = Rails.logger

二、生效配置并验证

  • 重启你的Rails生产服务器(比如passenger restart、puma restart或者容器重启)
  • 之后访问站点,查看log/production.log,就能看到类似开发环境的SQL日志了:

FooterLink Load (1.1ms) SELECT "navigation_links".* FROM "navigation_links" WHERE "navigation_links"."location" = $1 AND "navigation_links"."column" = $2 [["location", 0], ["column", 3]]

三、实时查看查询日志

如果你想实时监控这些SQL查询,可以在服务器上用命令行工具:

tail -f log/production.log

这个命令会持续输出日志的最新内容,方便你实时观察慢查询。

注意事项

  • 性能与日志量:打开:debug级别日志会大幅增加日志体积,排查完问题后一定要把config.log_level改回默认的:info,避免占用过多磁盘空间。
  • 部署环境适配:如果你的应用部署在像Heroku这样的平台,日志是通过stdout输出的,上述配置依然有效,你可以通过平台的日志查看工具(比如heroku logs -t)实时查看。

内容的提问来源于stack exchange,提问作者Mark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:32:04