2015-05-12 115 views
1

很多類似的問題都會詢問如何在控制檯窗口中隱藏sql日誌,答案建議更改Active Record的日誌級別或完全關閉AR日誌記錄。在rails 4控制檯中,如何將所有sql活動記錄到文件中,但不記錄到控制檯輸出中?

但是我仍然希望AR記錄所有內容,我只想將其記錄到文件中,而不是記錄到控制檯輸出窗口(因爲它使控制檯嘈雜,所以我看不到我的手動日誌)。

我該如何實現我想要的?

回答

2

ActiveRecord::Railtie代碼是什麼說廣播記錄信息到控制檯:

# When loading console, force ActiveRecord::Base to be loaded 
# to avoid cross references when loading a constant for the 
# first time. Also, make it output to STDERR. 
console do |app| 
    require "active_record/railties/console_sandbox" if app.sandbox? 
    require "active_record/base" 
    console = ActiveSupport::Logger.new(STDERR) 
    Rails.logger.extend ActiveSupport::Logger.broadcast console 
end 

這麼一兩件事,當你第一次進入控制檯,你可以做的是設置ActiveRecord::Base.logger到一個新的記錄器沒有廣播它的消息到控制檯。例如:

ActiveRecord::Base.logger = ActiveSupport::Logger.new("log/development.log") 

「log/development.log」可以更改爲您想要發送SQL輸出的任何位置。

相關問題