class LogStash::Outputs::Base
Public Class Methods
new(params={})
click to toggle source
Calls superclass method
LogStash::Plugin::new
# File lib/logstash/outputs/base.rb, line 48 def initialize(params={}) super config_init(params) end
Public Instance Methods
handle(event)
click to toggle source
# File lib/logstash/outputs/base.rb, line 85 def handle(event) receive(event) end
handle_worker(event)
click to toggle source
# File lib/logstash/outputs/base.rb, line 89 def handle_worker(event) @worker_queue.push(event) end
receive(event)
click to toggle source
# File lib/logstash/outputs/base.rb, line 59 def receive(event) raise "#{self.class}#receive must be overidden" end
register()
click to toggle source
# File lib/logstash/outputs/base.rb, line 54 def register raise "#{self.class}#register must be overidden" end
worker_setup()
click to toggle source
# File lib/logstash/outputs/base.rb, line 64 def worker_setup return unless @workers > 1 define_singleton_method(:handle, method(:handle_worker)) @worker_queue = SizedQueue.new(20) @worker_threads = @workers.times do |i| Thread.new(original_params, @worker_queue) do |params, queue| LogStash::Util::set_thread_name(">#{self.class.config_name}.#{i}") worker_params = params.merge("workers" => 1, "codec" => @codec.clone) worker_plugin = self.class.new(worker_params) worker_plugin.register while true event = queue.pop worker_plugin.handle(event) end end end end
workers_not_supported(message=nil)
click to toggle source
# File lib/logstash/outputs/base.rb, line 37 def workers_not_supported(message=nil) return if @workers == 1 if message @logger.warn(I18n.t("logstash.pipeline.output-worker-unsupported-with-message", :plugin => self.class.config_name, :worker_count => @workers, :message => message)) else @logger.warn(I18n.t("logstash.pipeline.output-worker-unsupported", :plugin => self.class.config_name, :worker_count => @workers)) end @workers = 1 end
Private Instance Methods
output?(event)
click to toggle source
# File lib/logstash/outputs/base.rb, line 94 def output?(event) if !@type.empty? if event["type"] != @type @logger.debug? and @logger.debug(["outputs/#{self.class.name}: Dropping event because type doesn't match #{@type}", event]) return false end end if !@tags.empty? return false if !event["tags"] @include_method = :any? if !@tags.send(@include_method) {|tag| event["tags"].include?(tag)} @logger.debug? and @logger.debug("outputs/#{self.class.name}: Dropping event because tags don't match #{@tags.inspect}", event) return false end end if !@exclude_tags.empty? && event["tags"] if @exclude_tags.send(@exclude_method) {|tag| event["tags"].include?(tag)} @logger.debug? and @logger.debug("outputs/#{self.class.name}: Dropping event because tags contains excluded tags: #{exclude_tags.inspect}", event) return false end end return true end