Class: Fluent::Plugin::TailInput::TailWatcher::RotateHandler

Inherits:
Object
  • Object
show all
Defined in:
lib/fluent/plugin/in_tail.rb

Instance Method Summary collapse

Constructor Details

#initialize(path, log, &on_rotate) ⇒ RotateHandler

Returns a new instance of RotateHandler.



622
623
624
625
626
627
628
# File 'lib/fluent/plugin/in_tail.rb', line 622

def initialize(path, log, &on_rotate)
  @path = path
  @inode = nil
  @fsize = -1  # first
  @on_rotate = on_rotate
  @log = log
end

Instance Method Details

#on_notifyObject



630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
# File 'lib/fluent/plugin/in_tail.rb', line 630

def on_notify
  begin
    stat = Fluent::FileWrapper.stat(@path)
    inode = stat.ino
    fsize = stat.size
  rescue Errno::ENOENT
    # moved or deleted
    inode = nil
    fsize = 0
  end

  begin
    if @inode != inode || fsize < @fsize
      # rotated or truncated
      begin
        io = Fluent::FileWrapper.open(@path)
      rescue Errno::ENOENT
      end
      @on_rotate.call(io)
    end
    @inode = inode
    @fsize = fsize
  end

rescue
  @log.error $!.to_s
  @log.error_backtrace
end