class LogStashLogger::Device::Base

Attributes

error_logger[RW]
io[R]
sync[RW]

Public Class Methods

new(opts={}) click to toggle source
# File lib/logstash-logger/device/base.rb, line 8
def initialize(opts={})
  @sync = opts[:sync]
  @error_logger = opts.fetch(:error_logger, LogStashLogger.configuration.default_error_logger)
end

Public Instance Methods

close(opts = {}) click to toggle source
# File lib/logstash-logger/device/base.rb, line 46
def close(opts = {})
  close!
rescue => e
  log_error(e)
end
close!() click to toggle source
# File lib/logstash-logger/device/base.rb, line 52
def close!
  @io && @io.close
ensure
  @io = nil
end
flush() click to toggle source
# File lib/logstash-logger/device/base.rb, line 38
def flush
  @io && @io.flush
end
reset() click to toggle source
# File lib/logstash-logger/device/base.rb, line 42
def reset
  close
end
to_io() click to toggle source
# File lib/logstash-logger/device/base.rb, line 13
def to_io
  @io
end
unrecoverable_error?(e) click to toggle source
# File lib/logstash-logger/device/base.rb, line 58
def unrecoverable_error?(e)
  e.is_a?(JSON::GeneratorError)
end
write(message) click to toggle source
# File lib/logstash-logger/device/base.rb, line 17
def write(message)
  write_one(message) unless message.nil?
end
write_batch(messages, group = nil) click to toggle source
# File lib/logstash-logger/device/base.rb, line 32
def write_batch(messages, group = nil)
  messages.each do |message|
    write_one(message)
  end
end
write_one(message) click to toggle source
# File lib/logstash-logger/device/base.rb, line 21
def write_one(message)
  @io.write(message)
rescue => e
  if unrecoverable_error?(e)
    log_error(e)
    log_warning("unrecoverable error, aborting write")
  else
    raise
  end
end

Private Instance Methods

log_error(e) click to toggle source
# File lib/logstash-logger/device/base.rb, line 64
def log_error(e)
  error_logger.error "[#{self.class}] #{e.class} - #{e.message}"
end
log_warning(message) click to toggle source
# File lib/logstash-logger/device/base.rb, line 68
def log_warning(message)
  error_logger.warn("[#{self.class}] #{message}")
end