2011-10-11 55 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輸出效果很好。