2011-10-11 56 views

回答

149

这样做的更好的方法是通过键入以下到控制台:

ActiveRecord::Base.logger.level = 1 

,因为它阻止试图用一个指针设置为无(源的记录器的问题: Disable Rails SQL logging in console

+25

谢谢。并重新打开它,“ActiveRecord :: Base.logger.level = 0”。 – thebenedict

+0

任何想法如何与Mongoid做到这一点? –

8

简短的回答...... 在文件development.rb改变或增加的config.log_level值,以便有像

config.log_level = :info 
+1

不,这似乎没有任何影响在控制台上发生的事情。另外,我更喜欢不需要我更改项目文件的解决方案。 –

+0

好的,该解决方案适用于webrick,但您可能正在使用其他服务器或在生产或测试模式下运行? – madth3

+2

它用于更改日志文件的内容。但问题是关于rails控制台,而不是日志文件。 –

29
ActiveRecord::Base.logger = nil 

线从here

+6

这可能会导致带有ActiveRecord的'NoMethodError's预期'ActiveRecord :: Base.logger'是一个对象而不是'nil'。 –

5

从我的一个朋友:

your_query; nil 
+1

为了提高你的文章的质量,请包括你的文章如何/为什么会解决问题。 –

+6

这会阻止你的ruby控制台将表达式的结果转储到控制台,但它不会阻止ActiveRecord将sql信息转储到rails日志记录器。 – eremzeit

+1

对于之前的评论者:这回答了这个问题,这是唯一对我有用的答案,还有什么可以期待的? – valk

-2

我看到你已经得到你需要的尽管我想向您建议“安静的资产”宝石,但大多数日志数据将是资产编译和包含,该宝石将删除它并仍输出查询和数据行为。

玩得开心

+1

问题是关于输出到控制台,而不是日志文件 –

4

在Rails 3.2,设定

config.logger.level = Logger::INFO 

对我来说关闭SQL输出效果很好。