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