2009-09-27 69 views
13

我有一個小框架,它使用內置於ruby的Logger對象記錄一些信息和調試消息。在運行時,這很好。在單元測試時間(使用rspec,如果它很重要...)我想將記錄的消息轉儲到內存字符串變量中。做這件事最簡單的方法是什麼?Ruby:將記錄器消息發送到字符串變量?

我正在考慮猴子補丁將取代信息和調試方法,像這樣:


class Logger 
    def info msg 
    $logs = msg 
    super msg 
    end 
end 

有沒有更好的方法去送我的日誌消息給一個字符串變量?

回答

29

使用StringIO

require 'stringio' 
require 'logger' 

strio = StringIO.new 
l = Logger.new strio 
l.warn "whee, i am logging to a string!" 

puts strio.string 
+0

只是刪除括號有rubyish風格。 – khelll 2009-09-27 19:36:29

+2

刪除了括號。就個人而言,我更喜歡使用括號,但我編輯它以更符合問題中使用的編碼風格。 – hrnt 2009-09-27 19:50:43

+0

謝謝,hrnt。這正是我一直在尋找的! – 2009-09-28 00:00:29

相關問題