class LogStash::Outputs::Lumberjack

Constants

RECONNECT_BACKOFF_SLEEP

Public Instance Methods

close() click to toggle source
# File lib/logstash/outputs/lumberjack.rb, line 74
def close
  buffer_flush(:force => true)
end
flush(events, close = false) click to toggle source
# File lib/logstash/outputs/lumberjack.rb, line 62
def flush(events, close = false)
  begin
    @logger.debug? && @logger.debug("Sending events to lumberjack", :size => events.size)
    @client.write(events)
  rescue Exception => e
    @logger.error("Client write error, trying connect", :e => e, :backtrace => e.backtrace)
    sleep(RECONNECT_BACKOFF_SLEEP)
    connect
    retry
  end # begin
end
receive(event) click to toggle source
# File lib/logstash/outputs/lumberjack.rb, line 57
def receive(event)
  return if event == LogStash::SHUTDOWN
  @codec.encode(event)
end
register() click to toggle source
# File lib/logstash/outputs/lumberjack.rb, line 40
def register
  require 'lumberjack/client'

  buffer_initialize(
    :max_items => @flush_size,
    :max_interval => @idle_flush_time,
    :logger => @logger
  )

  connect

  @codec.on_event do |event, payload|
    buffer_receive({ "line" => payload })
  end
end

Private Instance Methods

connect() click to toggle source
# File lib/logstash/outputs/lumberjack.rb, line 79
def connect
  require 'resolv'
  @logger.debug("Connecting to lumberjack server.", :addresses => @hosts, :port => @port,
      :ssl_certificate => @ssl_certificate, :flush_size => @flush_size)
  begin
    ips = []
    @hosts.each { |host| ips += Resolv.getaddresses host }
    @client = Lumberjack::Client.new(:addresses => ips.uniq, :port => @port,
      :ssl_certificate => @ssl_certificate, :flush_size => @flush_size)
  rescue Exception => e
    @logger.error("All hosts unavailable, sleeping", :hosts => ips.uniq, :e => e,
      :backtrace => e.backtrace)
    sleep(10)
    retry
  end
end