class LogStasher::Device::Syslog

Attributes

options[R]

Public Class Methods

new(options = {}) click to toggle source
# File lib/logstasher/device/syslog.rb, line 13
def initialize(options = {})
  raw_options = default_options.merge(stringify_keys(options))

  @options = parse_options(raw_options)
  open_syslog
end

Public Instance Methods

close() click to toggle source
# File lib/logstasher/device/syslog.rb, line 20
def close
  ::Syslog.close rescue nil
end
closed?() click to toggle source
# File lib/logstasher/device/syslog.rb, line 24
def closed?
  !::Syslog.opened?
end
facility() click to toggle source
# File lib/logstasher/device/syslog.rb, line 28
def facility
  options['facility']
end
flags() click to toggle source
# File lib/logstasher/device/syslog.rb, line 32
def flags
  options['flags']
end
identity() click to toggle source
# File lib/logstasher/device/syslog.rb, line 36
def identity
  options['identity']
end
priority() click to toggle source
# File lib/logstasher/device/syslog.rb, line 40
def priority
  options['priority']
end
write(log) click to toggle source
# File lib/logstasher/device/syslog.rb, line 44
def write(log)
  fail ::RuntimeError, 'Syslog has been closed.' if closed?
  fail ::RuntimeError, 'Syslog re-configured unexpectedly.' if syslog_config_changed?

  ::Syslog.log(priority, '%s', log)
end

Private Instance Methods

default_options() click to toggle source
# File lib/logstasher/device/syslog.rb, line 53
def default_options
  {
    'identity' => 'logstasher',
    'facility' => ::Syslog::LOG_LOCAL0,
    'priority' => ::Syslog::LOG_INFO,
    'flags'    => ::Syslog::LOG_PID | ::Syslog::LOG_CONS,
  }
end
open_syslog() click to toggle source
# File lib/logstasher/device/syslog.rb, line 62
def open_syslog
  if ::Syslog.opened?
    ::Syslog.reopen(identity, flags, facility)
  else
    ::Syslog.open(identity, flags, facility)
  end
end
parse_option(value) click to toggle source
# File lib/logstasher/device/syslog.rb, line 70
def parse_option(value)
  case value
  when ::String
    ::Syslog.const_get(value.to_s)
  when ::Array
    value.reduce(0) { |all, current| all |= parse_option(current) }
  else
    value
  end
end
parse_options(options) click to toggle source
# File lib/logstasher/device/syslog.rb, line 81
def parse_options(options)
  options['facility'] = parse_option(options['facility'])
  options['priority'] = parse_option(options['priority'])
  options['flags']    = parse_option(options['flags'])
  options
end
syslog_config_changed?() click to toggle source
# File lib/logstasher/device/syslog.rb, line 88
def syslog_config_changed?
  ::Syslog.ident != identity || ::Syslog.options != flags || ::Syslog.facility != facility
end