class Syslog::Message

Attributes

app_name[RW]
datetime[RW]
facility[RW]
hostname[RW]
message[RW]
msgid[RW]
procid[RW]
severity[RW]
structured_data[RW]
version[RW]

Public Class Methods

new(str) click to toggle source
# File lib/syslog/message.rb, line 18
def initialize(str)
  m = Syslog::Pattern::MESSAGE.match(str)
  fail(ArgumentError, 'Not a valid syslog message.') if m.nil?

  pri = m[:priority].to_i
  @facility = pri / 8
  @severity = pri % 8

  @version          = m[:version].to_i
  @datetime         = maybe_nil(m[:timestamp]) { |t| DateTime.parse(t) }
  @hostname         = maybe_nil(m[:hostname])
  @app_name         = maybe_nil(m[:app_name])
  @procid           = maybe_nil(m[:procid])
  @msgid            = maybe_nil(m[:msgid])
  @structured_data  = maybe_nil(m[:structured_data])
  @message          = m[:message]
end
parse(str) click to toggle source
# File lib/syslog/message.rb, line 65
def self.parse(str)
  begin
    Message.new(str)
  rescue ArgumentError
    nil
  end
end

Public Instance Methods

to_s() click to toggle source
# File lib/syslog/message.rb, line 52
def to_s
  str = ''
  str << "<#{(@facility * 8) + @severity}>#{@version} "
  str << "#{nil_or(@datetime) { |d| d.strftime('%Y-%m-%dT%H:%M:%S.%6N%:z') }} "
  str << "#{nil_or(@hostname)} "
  str << "#{nil_or(@app_name)} "
  str << "#{nil_or(@procid)} "
  str << "#{nil_or(@msgid)} "
  str << "#{nil_or(@structured_data)}"
  str << " #{@message}" unless @message.nil?
  str
end

Private Instance Methods

maybe_nil(val) { |val| ... } click to toggle source
# File lib/syslog/message.rb, line 36
def maybe_nil(val)
  unless val == '-'
    block_given? ? yield(val) : val
  end
end
nil_or(val) { |val| ... } click to toggle source
# File lib/syslog/message.rb, line 43
def nil_or(val)
  if val.nil?
    '-'
  else
    block_given? ? yield(val) : val
  end
end