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