2014-10-03 73 views
0

如何使Rails日誌記錄在所有環境中均等工作?使一致的Rails日誌記錄

  • 當前,當我在Windows/WEBrick環境中使用puts登錄時,輸出會顯示在控制檯中,但不會出現在標準日誌文件中。
  • 當我使用Rails.logger時,消息僅記錄到日誌文件。

當我同時使用,這使得問題的Apache /客運環境,因爲所有的控制檯輸出被記錄到日誌文件,我得到每個日誌事件雙線。

回答

1

您不應該使用puts進行實際記錄。它可能對調試很有用,但它不是一個合適的日誌記錄機制。

如果你想記錄一些東西,那麼正確的方法是使用Rails.logger

Rails.logger.info "something" 

默認情況下,記錄器僅記錄日誌文件。某些服務器(如Passenger)也用於在控制檯中輸出日誌,但這不是標準行爲。

如果您還想在控制檯中進行日誌記錄,則可以設置記錄器在開發環境中的行爲不同(例如)。只需使用自定義操作創建一個新的記錄器。

Rails的記錄器是一個ActiveSupport::Logger,它從紅寶石Logger繼承

例如,要記錄在控制檯中發展分配在開發環境

Rails.logger = ActiveSupport::Logger.new(STDOUT) 

如果你想登錄以下兩個記錄儀到文件和控制檯,創建代理每個記錄器的自定義記錄器類。調用兩個實例,一個是文件記錄器,另一個是控制檯記錄器。

但是,最簡單的想法是tail -f另一個控制檯選項卡中的開發日誌可以訪問日誌條目。