2010-05-18 27 views

回答

2

使用Logger標準庫類:

require 'logger' 

logger = Logger.new 'my.log' 
logger.info "Started." 
foo = 42 
logger.debug "foo is now #{foo}" 
begin 
    foo = 1/0 
rescue Exception => ex 
    logger.error "Caught exception: #{ex.inspect}" 
end 
logger.info "Finished." 

輸出到my.log

# Logfile created on Tue May 18 14:55:35 +0200 2010 by logger.rb 
I, [2010-05-18T14:55:35.021048 #8832] INFO -- : Started. 
D, [2010-05-18T14:55:35.021141 #8832] DEBUG -- : foo is now 42 
E, [2010-05-18T14:55:35.021231 #8832] ERROR -- : Caught exception: #<ZeroDivisionError: divided by 0> 
I, [2010-05-18T14:55:35.021283 #8832] INFO -- : Finished. 

您可以更改格式的任何方式,您通過繼承記錄儀喜歡那麼 將覆蓋format_message方法:

class MyLogger < Logger 
    def format_message(severity, timestamp, progname, msg) 
    sprintf "%s,%03d %7s: %s\n", 
    timestamp.strftime("%Y-%m-%d %H:%M:%S"), 
    (timestamp.usec/1000).to_s, 
    severity, 
    msg 
    end 
end 

logger = MyLogger.new 'my.log' 
... 

輸出:

# Logfile created on Tue May 18 15:07:42 +0200 2010 by logger.rb 
2010-05-18 15:07:42,980 INFO: Started. 
2010-05-18 15:07:42,980 DEBUG: foo is now 42 
2010-05-18 15:07:42,980 ERROR: Caught exception: #<ZeroDivisionError: divided by 0> 
2010-05-18 15:07:42,980 INFO: Finished. 
相關問題