2009-09-27 34 views
13

Tôi có một khung công tác nhỏ đang ghi nhật ký một số thông tin và gỡ lỗi các thông báo bằng cách sử dụng đối tượng Logger được tích hợp vào ruby. Vào thời gian chạy, công trình này rất tuyệt. Tại thời điểm thử nghiệm đơn vị (sử dụng rspec nếu nó quan trọng ...) tôi muốn đổ các thông điệp đã đăng nhập vào một biến chuỗi bộ nhớ. Cách dễ nhất để thực hiện việc này là gì?Ruby: Gửi thông điệp nhật ký tới một biến chuỗi?

Tôi đã xem xét một bản vá khỉ đó sẽ thay thế các phương pháp thông tin và gỡ lỗi, như thế này:


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

là có một cách tốt hơn để đi về gửi tin nhắn đăng nhập của tôi vào một chuỗi biến?

Trả lời

29

Sử dụng 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

Chỉ cần loại bỏ các dấu ngoặc đơn để có một phong cách rubyish. – khelll

+2

Đã xóa dấu ngoặc đơn. Cá nhân, tôi thích sử dụng dấu ngoặc đơn, nhưng tôi đã chỉnh sửa nó để phù hợp hơn với kiểu mã hóa được sử dụng trong câu hỏi. – hrnt

+0

cảm ơn, hrnt. đó là chính xác những gì tôi đang tìm kiếm! –

Các vấn đề liên quan