Sha256: 51a36652f73e253b5bf2510f0320415910bde7ff69a539a14e7890be1bdc2681
Contents?: true
Size: 1.46 KB
Versions: 9
Compression:
Stored size: 1.46 KB
Contents
require "eventmachine-tail" require "logstash/inputs/base" require "logstash/namespace" require "socket" # for Socket.gethostname class LogStash::Inputs::File < LogStash::Inputs::Base public def initialize(url, type, config={}, &block) super # Hack the hostname into the url. # This works since file:// urls don't generally have a host in it. @url.host = Socket.gethostname end # def initialize public def register @logger.info("Registering #{@url}") EventMachine::FileGlobWatchTail.new(@url.path, Reader, interval=60, exclude=[], receiver=self) end # def register public def receive(filetail, event) url = @url.clone url.path = filetail.path @logger.debug(["original url", { :originalurl => @url, :newurl => url }]) event = LogStash::Event.new({ "@message" => event, "@type" => @type, "@tags" => @tags.clone, }) event.source = url @logger.debug(["Got event", event]) @callback.call(event) end # def receive private class Reader < EventMachine::FileTail def initialize(path, receiver) super(path) @receiver = receiver @buffer = BufferedTokenizer.new # From eventmachine end def receive_data(data) # TODO(2.0): Support multiline log data @buffer.extract(data).each do |line| @receiver.receive(self, line) end end # def receive_data end # class Reader end # class LogStash::Inputs::File
Version data entries
9 entries across 9 versions & 1 rubygems