class LogStashLogger::Device::Redis

Constants

DEFAULT_LIST

Attributes

list[RW]

Public Class Methods

new(opts) click to toggle source
# File lib/logstash-logger/device/redis.rb, line 10
def initialize(opts)
  super
  @list = opts.delete(:list) || DEFAULT_LIST
  @buffer_group = @list

  normalize_path(opts)

  @redis_options = opts
end

Public Instance Methods

close!() click to toggle source
# File lib/logstash-logger/device/redis.rb, line 53
def close!
  @io && @io.quit
end
connect() click to toggle source
# File lib/logstash-logger/device/redis.rb, line 20
def connect
  @io = ::Redis.new(@redis_options)
end
reconnect() click to toggle source
# File lib/logstash-logger/device/redis.rb, line 24
def reconnect
  @io.client.reconnect
rescue => e
  log_error(e)
end
with_connection() { || ... } click to toggle source
# File lib/logstash-logger/device/redis.rb, line 30
def with_connection
  connect unless connected?
  yield
rescue ::Redis::InheritedError
  reconnect
  retry
rescue => e
  log_error(e)
  close(flush: false)
  raise
end
write_batch(messages, list = nil) click to toggle source
# File lib/logstash-logger/device/redis.rb, line 42
def write_batch(messages, list = nil)
  list ||= @list
  with_connection do
    @io.rpush(list, messages)
  end
end
write_one(message, list = nil) click to toggle source
# File lib/logstash-logger/device/redis.rb, line 49
def write_one(message, list = nil)
  write_batch(message, list)
end

Private Instance Methods

normalize_path(opts) click to toggle source
# File lib/logstash-logger/device/redis.rb, line 59
def normalize_path(opts)
  path = opts.fetch(:path, nil)
  if path
    opts[:db] = path.gsub("/", "").to_i unless path.empty?
    opts.delete(:path)
  end
end