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