class RailsGraylogger::Logger

Constants

FIELD_KEY_REGEXP

Public Class Methods

initialize_log_buffer() click to toggle source
# File lib/rails-graylogger/logger.rb, line 10
def initialize_log_buffer
  RequestStore.store[:graylog2_buffer] = []
end
new(logger) click to toggle source
# File lib/rails-graylogger/logger.rb, line 5
def initialize(logger)
  @logger = logger
end
request_buffer() click to toggle source
# File lib/rails-graylogger/logger.rb, line 18
def request_buffer
  RequestStore.store[:graylog2_buffer]
end
request_tags() click to toggle source
# File lib/rails-graylogger/logger.rb, line 14
def request_tags
  RequestStore.store[:graylog2_tags] ||= []
end

Public Instance Methods

tagged(*new_tags, &block) click to toggle source
# File lib/rails-graylogger/logger.rb, line 23
def tagged(*new_tags, &block)
  new_tags = Array.wrap(new_tags).flatten.reject(&:blank?)
  self.class.request_tags << new_tags - ( self.class.request_tags & new_tags )
  @logger.send("tagged", *new_tags, &block)
end

Private Instance Methods

method_missing(method, *args, &block) click to toggle source
# File lib/rails-graylogger/logger.rb, line 31
def method_missing(method, *args, &block)
  if [:info, :debug, :warn, :error, :fatal].include?(method) && !args[0].nil?
    if args.size == 1 && args[0].is_a?(String)
      hash = { short_message: args[0] }
    else
      return if args.blank?
      hash = { short_message: args.compact.map(&:to_s).join("\n") }
    end

    unless self.class.request_buffer.nil?
      self.class.request_buffer << hash
    else
      notify!(method, hash)
    end
  end
  @logger.send(method, *args, &block)
end
notify!(method, payload) click to toggle source
# File lib/rails-graylogger/logger.rb, line 49
def notify!(method, payload)
  message = RailsGraylogger::Message.new({
    level: "GELF::Levels::#{method.upcase}".constantize,
    short_message: payload.delete(:short_message)
  })
  message.process_extra_fields(payload)
  message.tags = self.class.request_tags unless self.class.request_tags.blank?
  RailsGraylogger::Notifier.notify!(message.to_hash)
end