首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Ruby on Rails 開發從頭來(三十五):內建日誌系統詳解

     編輯:Java 相關知識

Rails Logger 架構

Rails 內建 Logger 類別(源自 Ruby 標準庫),可在所有元件(Model、Controller、Mailer 等)直接使用 logger 方法記錄訊息。

四大日誌等級

logger.warn("I don't think that's a good idea")
logger.info("Dave's trying to do something bad")
logger.error("Now he's gone and broken it")
logger.fatal("I give up")

等級順序:DEBUG < INFO < WARN < ERROR < FATAL。環境設定決定實際寫入門檻。

日誌檔案對應環境

切換環境時自動使用對應日誌檔,無需修改程式碼。

日誌內容範例

Processing StoreController#index (for 127.0.0.1 at 2007-01-14 18:18:30) [GET]
  Session ID: b2c3d4e5f6...
  Parameters: {"action"=>"index", "controller"=>"store"}
  SQL (0.001s)   SELECT * FROM products WHERE (salable = 1)
  Rendering template store/index
Completed in 0.04500 (22 reqs/sec) | Rendering: 0.03200 (71%) | DB: 0.00800 (17%) | 200 OK

包含請求處理流程、SQL 語句與耗時、渲染細節、效能指標,極利於效能調優與問題追蹤。

自訂 Logger 設定

在 config/environments/*.rb 中可覆寫預設 logger:

# 開發環境每天輪轉日誌
config.logger = Logger.new(config.log_path, 'daily')
config.logger.level = Logger::DEBUG

# 生產環境僅記錄錯誤,發送郵件通知
config.logger = Logger.new(config.log_path)
config.logger.level = Logger::ERROR

最佳實務

  • 開發階段大量使用 logger.debug 記錄關鍵變數與流程分支。
  • 生產環境避免 debug/info 級別大量輸出,影響磁碟 I/O 與效能。
  • 關鍵業務流程(付款、庫存變更)務必記錄 info 或 warn 級別審計軌跡。
  • 使用結構化日誌(JSON 格式)便於日後集中分析(ELK Stack 等)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
環境日誌檔案預設等級
Developmentlog/development.logDEBUG
Testlog/test.logDEBUG
Productionlog/production.logINFO