class Orchestrator::Logger
Constants
- DEFAULT_LEVEL
- TODO
-
Make this a config item
- LEVEL
Attributes
level[R]
Public Class Methods
new(loop, mod)
click to toggle source
# File lib/orchestrator/logger.rb, line 19 def initialize(loop, mod) @loop = loop @mod_id = mod.id if mod.respond_to? :dependency @klass = mod.dependency.class_name else @klass = 'User' # Filter by user driven events and behavior end @level = DEFAULT_LEVEL @listeners = Set.new @logger = ::Orchestrator::Control.instance.logger end
Public Instance Methods
add(listener)
click to toggle source
Add listener
# File lib/orchestrator/logger.rb, line 38 def add(listener) @loop.schedule do @listeners.add listener end listener.promise.finally do @loop.schedule do @listeners.delete listener end end listener end
debug(msg)
click to toggle source
# File lib/orchestrator/logger.rb, line 60 def debug(msg) if @level <= 0 log(:debug, msg) end end
delete(listener)
click to toggle source
# File lib/orchestrator/logger.rb, line 50 def delete(listener) @loop.schedule do @listeners.delete listener if @listeners.size == 0 level = DEFAULT_LEVEL # back to efficient logging end end end
error(msg)
click to toggle source
# File lib/orchestrator/logger.rb, line 78 def error(msg) if @level <= 3 log(:error, msg) end end
fatal(msg)
click to toggle source
# File lib/orchestrator/logger.rb, line 84 def fatal(msg) if @level <= 4 log(:fatal, msg) end end
info(msg)
click to toggle source
# File lib/orchestrator/logger.rb, line 66 def info(msg) if @level <= 1 log(:info, msg) end end
level=(level)
click to toggle source
# File lib/orchestrator/logger.rb, line 32 def level=(level) @level = LEVEL[level] || level end
print_error(e, msg = '', trace = nil)
click to toggle source
# File lib/orchestrator/logger.rb, line 90 def print_error(e, msg = '', trace = nil) msg << "\n#{e.message}" msg << "\n#{e.backtrace.join("\n")}" if e.respond_to?(:backtrace) && e.backtrace msg << "\nCaller backtrace:\n#{trace.join("\n")}" if trace error(msg) end
warn(msg)
click to toggle source
# File lib/orchestrator/logger.rb, line 72 def warn(msg) if @level <= 2 log(:warn, msg) end end
Protected Instance Methods
log(level, msg)
click to toggle source
# File lib/orchestrator/logger.rb, line 101 def log(level, msg) @loop.schedule do if LEVEL[level] >= DEFAULT_LEVEL @loop.work do @logger.tagged(@klass, @mod_id) { @logger.send(level, msg) } end end @listeners.each do |listener| listener.notify(@klass, @mod_id, level, msg) end end end