module Urbivore::Interface
Constants
- STANDARD_LEVELS
we expect logger to provide:
#configured_level (i.e., the default) #configured_levels (i.e., the scale)
…if these are nil, we send system defaults from here
Public Instance Methods
add(level, message_arg = nil, options = {}) { |: message_arg| ... }
click to toggle source
# File lib/urbivore/interface.rb, line 57 def add(level, message_arg = nil, options = {}, &message_block) level = level.is_a?(Numeric) ? available_levels.at(level) : level.to_sym unless current_levels.include?(level) return false end # support stdlib-style prognames thus: if options.is_a?(String) progname = options options = { progname: options } end unless options.is_a?(Hash) raise Urbivore::Exceptions::TypeError.new("options must be a String or a Hash") end message = block_given? ? yield : message_arg options.merge!(level: level) append_message(generate_message_object(message, options)) end
append_message(message_object)
click to toggle source
# File lib/urbivore/interface.rb, line 78 def append_message(message_object) # allow this object to queue the message for # later processing by defininng #message_collector if respond_to?(:message_collector) # check for optional live stream here message_collector(message_object) else logger.submit(message_object) end end
available_levels()
click to toggle source
# File lib/urbivore/interface.rb, line 22 def available_levels logger.configured_levels || STANDARD_LEVELS end
current_levels(requested = nil)
click to toggle source
# File lib/urbivore/interface.rb, line 38 def current_levels(requested = nil) if requested requested.is_a?(Array) ? levels_by_subset(requested) : levels_by_minimum(requested) else default_levels end end
default_level()
click to toggle source
# File lib/urbivore/interface.rb, line 14 def default_level logger.configured_level || :info end
default_levels()
click to toggle source
# File lib/urbivore/interface.rb, line 18 def default_levels levels_by_minimum(default_level) end
default_logger()
click to toggle source
allow config here…
# File lib/urbivore/interface.rb, line 10 def default_logger Urbivore::Logger end
generate_message_object(message, options = {})
click to toggle source
this is the interface to use for building novel stuff with messages don't instantiate Message
directly
# File lib/urbivore/interface.rb, line 91 def generate_message_object(message, options = {}) # ability to specify time useful for testing? timestamp = options[:timestamp] || Time.now level = options[:level] || default_level progname = options[:progname] data = options[:data] Urbivore::Message.new(timestamp, message, level, progname, data) end
levels_by_minimum(level)
click to toggle source
# File lib/urbivore/interface.rb, line 26 def levels_by_minimum(level) levels = available_levels # memoize this locally in these methods, # not in the getter above---we should # anticipate runtime changes levels.include?(level) ? levels.reject { |l| levels.index(l) < levels.index(level) } : nil end
levels_by_subset(levels)
click to toggle source
# File lib/urbivore/interface.rb, line 34 def levels_by_subset(levels) available_levels & levels end