Ruby与记录器在同一行上进行多次打印

时间:2015-04-21 21:49:01

标签: ruby logging

我使用putsprint以及\r来重写同一行中的内容。

例如:

    print "Fetching items...\r"

    #some loop here.
    print "Fetching items... #{i}/#{count}\r"
    #some loop here.

    puts "Fetching items... Done!"

现在我决定使用内置的ruby记录器来输出任何日志。

是否可以使用记录器做同样的事情?

1 个答案:

答案 0 :(得分:0)

只需使用自定义格式化程序:

require 'logger'

class SimpleFormatter < Logger::Formatter

Format = "%s, [%s#%d] %5s -- %s: %s"

def call(severity, time, progname, msg)
  m = msg2str(msg)
  m << "\n" unless m[-1] == "\r"
  Format % [severity[0..0], format_datetime(time), $$, severity, progname,
    m]
end
end

logger = Logger.new(STDOUT)
logger.formatter = SimpleFormatter.new
logger.info("123\r"); sleep(2); logger.info("234\r"); sleep(2); logger.info("345")