Module: LogStashLogger::Device

Defined in:
lib/logstash-logger/device.rb,
lib/logstash-logger/device/io.rb,
lib/logstash-logger/device/tcp.rb,
lib/logstash-logger/device/udp.rb,
lib/logstash-logger/device/base.rb,
lib/logstash-logger/device/file.rb,
lib/logstash-logger/device/unix.rb,
lib/logstash-logger/device/redis.rb,
lib/logstash-logger/device/socket.rb,
lib/logstash-logger/device/stderr.rb,
lib/logstash-logger/device/stdout.rb,
lib/logstash-logger/device/connectable.rb,
lib/logstash-logger/device/multi_delegator.rb

Defined Under Namespace

Classes: Base, Connectable, File, IO, MultiDelegator, Redis, Socket, Stderr, Stdout, TCP, UDP, Unix

Constant Summary collapse

DEFAULT_TYPE =
:udp

Class Method Summary collapse

Class Method Details

.build_device(opts) ⇒ Object



35
36
37
38
39
40
41
42
43
# File 'lib/logstash-logger/device.rb', line 35

def self.build_device(opts)
  if parsed_uri_opts = parse_uri_config(opts)
    opts = parsed_uri_opts
  end

  type = opts.delete(:type) || DEFAULT_TYPE

  device_klass_for(type).new(opts)
end

.device_klass_for(type) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/logstash-logger/device.rb', line 52

def self.device_klass_for(type)
  case type.to_sym
    when :udp then UDP
    when :tcp then TCP
    when :unix then Unix
    when :file then File
    when :redis then Redis
    when :io then IO
    when :stdout then Stdout
    when :stderr then Stderr
    else fail ArgumentError, 'Invalid type'
  end
end

.new(opts) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/logstash-logger/device.rb', line 20

def self.new(opts)
  opts = opts.dup

  if opts.is_a?(Array)
    # Multiple device configs supplied... create a MultiDelegator
    devices = opts.map{|opt| build_device(opt)}
    Device::MultiDelegator.new(*devices)
  elsif Hash
    # Create a single device
    build_device(opts)
  else
    raise ArgumentError, "Invalid device options: must be a Hash or an Array of Hashes"
  end
end

.parse_uri_config(opts) ⇒ Object



45
46
47
48
49
50
# File 'lib/logstash-logger/device.rb', line 45

def self.parse_uri_config(opts)
  if uri = opts[:uri]
    parsed = ::URI.parse(uri)
    {type: parsed.scheme, host: parsed.host, port: parsed.port, path: parsed.path}
  end
end