class RailsGraylogger::Message

Constants

FIELD_KEY_REGEXP

Attributes

extra_fields[RW]
full_message[RW]
level[RW]
short_message[RW]

Public Class Methods

from_event_payload(payload) click to toggle source
# File lib/rails-graylogger/message.rb, line 15
def from_event_payload(payload)
  message = self.new
  message.process_event_payload(payload)
  message
end
new(opts = {}) click to toggle source
# File lib/rails-graylogger/message.rb, line 7
def initialize(opts = {})
  @level = opts[:level] || GELF::Levels::INFO
  @short_message = opts[:short_message] || ""
  @full_message = opts[:full_message] || ""
  @extra_fields = {}
end

Public Instance Methods

process_event_payload(payload) click to toggle source
# File lib/rails-graylogger/message.rb, line 22
def process_event_payload(payload)
  self.level = level_from_status(payload[:status])
  self.short_message = "#{payload[:controller]}##{payload[:action]} #{payload[:method]} \"#{payload[:path]}\" from #{payload[:ipaddress]}"
  process_extra_fields(payload)
end
process_extra_fields(payload) click to toggle source
# File lib/rails-graylogger/message.rb, line 42
def process_extra_fields(payload)
  process_exception_data(payload.delete(:exception))

  payload.each do |key, value|
    @extra_fields["_#{key}"] = formatted_value(value) if valid_key?(key)
  end
end
tags=(tags) click to toggle source
# File lib/rails-graylogger/message.rb, line 28
def tags=(tags)
  raise ArgumentError.new("Not an array: #{tags.inspect}") unless tags.is_a?(Array)
  self.extra_fields[:_tags] = tags.join(" ")
end
to_hash() click to toggle source
# File lib/rails-graylogger/message.rb, line 33
def to_hash
  {
    level: level,
    short_message: short_message
  }.tap do |hash|
    hash[:full_message] = short_message + "\n" + full_message unless full_message.blank?
  end.merge(extra_fields)
end

Private Instance Methods

formatted_value(value) click to toggle source
# File lib/rails-graylogger/message.rb, line 52
def formatted_value(value)
  if value.is_a?(Numeric)
    value
  else
    value.to_s
  end
end
level_from_status(status) click to toggle source
# File lib/rails-graylogger/message.rb, line 64
def level_from_status(status)
  if status.is_a?(Numeric) && status < 400
    GELF::Levels::INFO
  else
    GELF::Levels::ERROR
  end
end
process_exception_data(exception) click to toggle source
# File lib/rails-graylogger/message.rb, line 72
def process_exception_data(exception)
  return unless exception.is_a?(Array)
  @extra_fields["_exception_class"] = exception.first.to_s
  @extra_fields["_exception_message"] = exception.last.to_s
end
valid_key?(key) click to toggle source
# File lib/rails-graylogger/message.rb, line 60
def valid_key?(key)
  key.match(FIELD_KEY_REGEXP)
end