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/kafka.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/balancer.rb,
lib/logstash-logger/device/connectable.rb,
lib/logstash-logger/device/multi_delegator.rb

Defined Under Namespace

Classes: Balancer, Base, Connectable, File, IO, Kafka, 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



27
28
29
30
31
32
33
34
35
36
# File 'lib/logstash-logger/device.rb', line 27

def self.build_device(opts)
  if parsed_uri_opts = parse_uri_config(opts)
    opts.delete(:uri)
    opts.merge!(parsed_uri_opts)
  end

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

  device_klass_for(type).new(opts)
end

.device_klass_for(type) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/logstash-logger/device.rb', line 45

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 :kafka then Kafka
    when :io then IO
    when :stdout then Stdout
    when :stderr then Stderr
    when :multi_delegator then MultiDelegator
    when :balancer then Balancer
    else fail ArgumentError, 'Invalid device type'
  end
end

.new(opts) ⇒ Object



22
23
24
25
# File 'lib/logstash-logger/device.rb', line 22

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

.parse_uri_config(opts) ⇒ Object



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

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