2015-10-14 39 views
1

我使用一個控制器內記錄的消息:Rails 4 - 我應該在塊Rails.env.development中放置記錄器/調試消息嗎?

logger.debug "Here is the resulting object find_by_sql outputs: #{@deal}" 

我應該使用

if Rails.env.development? 
    logger.debug "Here is the resulting object find_by_sql outputs: #{@deal}" 
end 

它是通常一個很好的做法,把記錄消息的Rails.dev塊內?我不想慢一點點的應用程序,所以事實上我添加一個if/end塊會減慢應用程序的速度。

讓它沒有任何限制的開發模式會危及信息安全?

+0

您的日誌(通常)存儲在您的主機服務器(託管您的應用程序的服務器)上。除非您有安全漏洞(入侵者可以連接到您的服務器),否則任何人都不應該能夠讀取您的日誌。另外,請記住,您在開發模式中所做的事情是您期望**發生的事情,但在生產模式中,一切都可能發生(有時用戶會做出奇怪的事情)。出於這個原因,我會嘗試在生產模式下記錄東西,因爲也許有一天會發生一些奇怪的事情,而且沒有計劃好,但是你不會有很多關於它的信息。 – MrYoshiji

回答

3

if語句沒有必要這樣做。它已經被環境

log_level控制在你config/environments/development.rb

config.log_level = :debug 

但是,如果你把這個變成config/environments/production.rb(默認值,順便說一句),你不會看到在生產日誌中的任何調試消息。

config.log_level = :warn 

如果要臨時增加的生產日誌詳細程度(用於調試或其他),改變LOG_LEVEL和重新部署。進行故障排除,然後在完成後回滾應用程序。比觸摸Rails.env更容易檢查整個代碼庫,不是嗎?

相關問題