Rails控制台未将SQL语句输出到我的开发日志

时间:2011-09-23 20:52:34

标签: ruby ruby-on-rails-3 logging development-environment

当我通过localhost访问Webrick服务器时,或者当我运行rails迁移时,我的development.log被正确写入。但是,当我使用“rails c”启动我的rails控制台然后尝试创建一个新的数据库对象并通过像“user.save”这样的命令保存它时,我在控制台中看到了SQL语句,但没有写入发展日志。

大多数人在回答与此类似的问题时说“请确保将配置设置为正确的环境”。我已经完成了这个,并且可以说在我的系统上这是一个全新的rails应用程序。

任何帮助将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:77)

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 :(得分:34)

我在Rails 2.3.8中,上面的答案并不适用于我。

ActiveRecord::Base.logger = Logger.new STDOUT

以下实际上有效:

ActiveRecord::Base.connection.instance_variable_set :@logger, Logger.new(STDOUT)

参考http://www.shanison.com/2012/03/05/show-sql-statements-in-rails-console/