打印到没有换行的日志文件 - Ruby on Rails

jua*_*tas 4 ruby ruby-on-rails

我有一个记录器可以打印到文件:

logger = Logger.new Rails.root.join 'log/my.log'
Run Code Online (Sandbox Code Playgroud)

如何在不同的记录器调用中在一行中打印多个点?

即,如果我这样做

some_array.each do |el|
  logger.info '.'
  el.some_method
end
Run Code Online (Sandbox Code Playgroud)

这些点将以不同的线条打印.

nul*_*eff 8

<<方法允许您编写消息而无需任何格式化日志文件.

例如:

require 'logger'

log = Logger.new "test.log"
log.info "Start"
5.times { log << "." }
log << "\n"
log.info "End"
Run Code Online (Sandbox Code Playgroud)

生产:

I, [2014-03-10T15:11:04.320495 #3410]  INFO -- : Start
.....
I, [2014-03-10T15:11:42.157131 #3410]  INFO -- : End
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不会让你写入与之前调用相同的行 log.info


Raf*_*aez 5

您可以使用 Logger#<<(msg)

转储给日志设备的消息没有任何格式.如果不存在日志设备,则返回nil.

some_array.each do |el|
  logger << '.'
  el.some_method
end
Run Code Online (Sandbox Code Playgroud)