class Urbivore::MessagePacket

Attributes

logger[R]

instance methods

Public Class Methods

logger(logger = nil) click to toggle source
# File lib/urbivore/message_packet.rb, line 6
def logger(logger = nil)
  if logger
    @logger = logger
  else
    @logger
  end
end
new(options = {}) click to toggle source
# File lib/urbivore/message_packet.rb, line 19
def initialize(options = {})
  @logger          = options[:default_level] || self.class.logger || default_logger
  @default_level   = options[:default_level]
  @message_store   = {}
  unless @logger.ancestors.include?(Urbivore::Logger)
    raise Urbivore::Exceptions::TypeError.new("MessagePacket expected a Logger")
  end
end

Public Instance Methods

message_collector(message_object) click to toggle source
# File lib/urbivore/message_packet.rb, line 28
def message_collector(message_object)
  # it may not matter... but keying these in a hash by level
  # seems like better design than putting them in a big pile
  # and using #select---if you generate a massive amount of debugging
  # info you don't want iterate over all of it just to generate a production
  # log message, right?
  @message_store[level] ||= []
  # shit like this needs to be made threadsafe
  @message_store[level] << message_object
end
messages(requested = nil) click to toggle source
# File lib/urbivore/message_packet.rb, line 39
def messages(requested = nil)
  # pull all desired levels and collate
  current_levels(requested).map { |level| @levels[level] }.flatten.sort
end
submit() click to toggle source

send self to the logging machine

# File lib/urbivore/message_packet.rb, line 45
def submit
  if @submitted 
    false
  else
    logger.submit(self)
    @submitted = true
  end
end
submit!() click to toggle source

as above, but raise exception when trying to submit an already submitted log

# File lib/urbivore/message_packet.rb, line 56
def submit!
  if @submitted
    raise Urbivore::Exceptions::RuntimeError.new("MessagePacket already submitted")
  else
    submit
  end
end