在Windows XP上从ruby脚本编写日志的推荐方法是什么?

时间:2010-05-18 02:48:14

标签: ruby windows-xp

太糟糕了我没有服务器而是XP来提供一些预定的ruby脚本。那么,什么 推荐的方式(gem /插件?)从ruby脚本在Windows XP上写日志?

1 个答案:

答案 0 :(得分: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.

您可以通过继承Logger然后以您喜欢的方式更改格式 覆盖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.
相关问题