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
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