无法使File Tail工作

时间:2014-01-28 09:15:56

标签: ruby logging tail

出于好奇,我尝试了file-tail ruby​​库,看看它如何与ruby代码一起工作。但是,代码似乎没有起作用。

这是我累了( logger.rb ):

$:.unshift File.dirname(__FILE__)

filename = 'logger.log'

require "file-tail"

File.open(filename) do |log|
  log.extend(File::Tail)
  log.interval = 10
  log.backward(10)
  log.tail { |line| puts line }
end

我的 logger.log 文件位于同一目录中。现在,当我运行:$ ruby logger.rb时,我会看到日志中的最后10行,但是当我打开logger.log文件时会向其添加一些日志数据,控制台不会显示任何进度。我的意思是它不会输出我附加的新日志。

我认为这可能存在问题。所以,我尝试继承并在继承的类中包含File :: Tail,如下所示:

$:.unshift File.dirname(__FILE__)

filename = 'logger.log'

require "file-tail"

class FileTail < File
  require "file-tail"
  include File::Tail
end

log = FileTail.new(filename)
log.interval = 10
log.backward(10)
log.tail { |line| print line }

然而,这种行为方式相同!!

任何指针?

我在安装了ruby-2.0.0-p353的MAC OC X 10.8.5上运行。

另外,如果有人在Ruby中实现了web版本的尾巴,请告诉我?

1 个答案:

答案 0 :(得分:0)

我的坏。当我关闭记录器文件的所有流时,这都有效。我在我的ruby代码中打开了文件但是没有关闭文件流。也许这就是为什么我没有在我的控制台上看到使用文件尾的任何日志输出。

因此,请确保使用 file-tail 程序关闭正在运行的日志/文本文件的所有流。