class LogStashLogger::Device::Connectable
Attributes
buffer_logger[RW]
Public Class Methods
new(opts = {})
click to toggle source
Calls superclass method
LogStashLogger::Device::Base::new
# File lib/logstash-logger/device/connectable.rb, line 10 def initialize(opts = {}) super if opts[:batch_events] warn "The :batch_events option is deprecated. Please use :buffer_max_items instead" end if opts[:batch_timeout] warn "The :batch_timeout option is deprecated. Please use :buffer_max_interval instead" end @buffer_group = nil @buffer_max_items = opts[:batch_events] || opts[:buffer_max_items] @buffer_max_interval = opts[:batch_timeout] || opts[:buffer_max_interval] @drop_messages_on_flush_error = if opts.key?(:drop_messages_on_flush_error) opts.delete(:drop_messages_on_flush_error) else false end @drop_messages_on_full_buffer = if opts.key?(:drop_messages_on_full_buffer) opts.delete(:drop_messages_on_full_buffer) else true end @buffer_flush_at_exit = if opts.key?(:buffer_flush_at_exit) opts.delete(:buffer_flush_at_exit) else true end @buffer_logger = opts[:buffer_logger] buffer_initialize( max_items: @buffer_max_items, max_interval: @buffer_max_interval, logger: buffer_logger, autoflush: @sync, drop_messages_on_flush_error: @drop_messages_on_flush_error, drop_messages_on_full_buffer: @drop_messages_on_full_buffer, flush_at_exit: @buffer_flush_at_exit ) end
Public Instance Methods
close(opts = {})
click to toggle source
Calls superclass method
LogStashLogger::Device::Base#close
# File lib/logstash-logger/device/connectable.rb, line 75 def close(opts = {}) if opts.fetch(:flush, true) buffer_flush(final: true) end super end
connect()
click to toggle source
Implemented by subclasses
# File lib/logstash-logger/device/connectable.rb, line 106 def connect fail NotImplementedError end
connected?()
click to toggle source
# File lib/logstash-logger/device/connectable.rb, line 89 def connected? !!@io end
flush(*args)
click to toggle source
# File lib/logstash-logger/device/connectable.rb, line 62 def flush(*args) if args.empty? buffer_flush else messages, group = *args write_batch(messages, group) end end
on_full_buffer_receive(data)
click to toggle source
# File lib/logstash-logger/device/connectable.rb, line 71 def on_full_buffer_receive(data) log_warning("Buffer Full - #{data}") end
reconnect()
click to toggle source
# File lib/logstash-logger/device/connectable.rb, line 115 def reconnect close(flush: false) connect end
reset()
click to toggle source
# File lib/logstash-logger/device/connectable.rb, line 110 def reset reset_buffer close(flush: false) end
to_io()
click to toggle source
Calls superclass method
LogStashLogger::Device::Base#to_io
# File lib/logstash-logger/device/connectable.rb, line 83 def to_io with_connection do super end end
with_connection() { || ... }
click to toggle source
Ensure the block is executed with a valid connection
# File lib/logstash-logger/device/connectable.rb, line 121 def with_connection(&block) connect unless connected? yield rescue => e log_error(e) close(flush: false) raise end
write(message)
click to toggle source
# File lib/logstash-logger/device/connectable.rb, line 58 def write(message) buffer_receive(message, @buffer_group) unless message.nil? end
write_batch(messages, group = nil)
click to toggle source
Calls superclass method
LogStashLogger::Device::Base#write_batch
# File lib/logstash-logger/device/connectable.rb, line 99 def write_batch(messages, group = nil) with_connection do super end end
write_one(message)
click to toggle source
Calls superclass method
LogStashLogger::Device::Base#write_one
# File lib/logstash-logger/device/connectable.rb, line 93 def write_one(message) with_connection do super end end