2011-11-01 46 views
20

儘管SQL/ActiveRecord調用的詳細功能在大多數情況下都很有用,但我希望在有一些循環正在進行的情況下關閉它。關閉詳細的sql/ActiveRecord for Rails 3.1.1

有沒有辦法關掉它?

irb(main):055:0> City.first 
    ←[1m←[35mCity Load (1.0ms)←[0m SELECT `cities`.* FROM `cities` LIMIT 1 
=> #<City id: 1, name: "bla bla", state_id: 1, zip: nil, country_id: nil, 
created_at: "2011-03-27 14:11:28", updated_at: "2011-08-16 11:14:36", guid: "5PK 
fvvz2Gsi"> 
+3

是的,你可以關閉它:http://stackoverflow.com/questions/7759321/disable-rails-3-1-sql-logging –

+0

謝謝你,@JohnBachir =) – Abdo

回答

25

在控制檯:
禁用:

old_logger = ActiveRecord::Base.logger 
ActiveRecord::Base.logger = nil 

啓用:

ActiveRecord::Base.logger = old_logger 
+1

是否有另一種方法做到這一點?這在使用logger.debug的代碼中導致錯誤。我想關閉那些我沒有手動編寫的。 – Abdo

+41

這樣做的另一種方式,如http://stackoverflow.com/questions/7759321/disable-rails-3-1-sql-logging中提到的,是'ActiveRecord :: Base.logger.level = 1'來打開註銷(將日誌級別設置爲info),並使用「ActiveRecord :: Base.logger.level = 0」將其重新打開(將日誌級別設置爲調試)。 –

+0

@HenrikN是永久性的,還是隻爲會話? – FloatingRock

4

在Rails 4,我用的ActiveRecord記錄SQL語句在我的規格的中間如此惱火了我通過將其添加到config/environments/test.rb來禁用它:

Rails.application.configure do 
    # ... 
    config.log_level = :info 
end