2009-09-27 9 views
13

Ich habe ein kleines Framework, das einige Info-und Debug-Nachrichten protokolliert mit dem Logger-Objekt in Ruby gebaut. Zur Laufzeit funktioniert das großartig. Zum Zeitpunkt des Komponententests (mit rspec, wenn es wichtig ist ...) möchte ich die protokollierten Nachrichten an eine in Speicher String-Variable ausgeben. Was ist der einfachste Weg, dies zu tun?Ruby: Logger-Nachrichten an eine String-Variable senden?

Ich erwäge einen Affen-Patch, der die Informationen und Debug-Methoden, wie diese ersetzen würde:


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

gibt es eine bessere Art und Weise über das Senden meine Log-Nachrichten an ein String-Variable zu gehen?

Antwort

29

Verwenden 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

Entfernen Sie einfach die Klammern einen rubyish Stil zu haben. – khelll

+2

Klammern entfernt. Persönlich bevorzuge ich Klammern, aber ich habe es bearbeitet, um mehr mit dem in der Frage verwendeten Codierungsstil übereinzustimmen. – hrnt

+0

danke, hrnt. Genau das habe ich gesucht! –

Verwandte Themen