ruby Logger格式化程序仅更改消息

时间:2016-01-12 23:43:34

标签: ruby logging

我想仅更改Ruby 1.9.3 Logger中default_formatter的msg部分。 我怎么能这样做?

我知道我可以做到

logger.formatter = proc do |severity, datetime, progname, msg|
   "[mymessage] #{msg}\n"
end

然后我丢失了severity, datetime, progname的其他默认格式。

理想情况下,我只想执行msg = "[mymessage] " + msg,然后使用此新msg执行默认格式化程序。

1 个答案:

答案 0 :(得分:1)

根据example in documentation,可以执行以下操作:

require 'logger'
logger = Logger.new(STDOUT)

original_formatter = Logger::Formatter.new
logger.formatter = proc { |severity, datetime, progname, msg|
  original_formatter.call(severity, datetime, progname, "[mymessage] #{msg}\n")
}

logger.debug("I am a debug msg")
logger.info("I am an info msg")

节目输出:

D, [2016-01-13T12:45:47.354261 #11512] DEBUG -- : [mymessage] I am a debug msg

I, [2016-01-13T12:45:47.354261 #11512]  INFO -- : [mymessage] I am an info msg