Module: Logger::HierarchyElement

Included in:
Hierarchy
Defined in:
lib/utilrb/logger/hierarchy.rb

Instance Method Summary collapse

Instance Method Details

#deregister_log_child(child) ⇒ Object



30
31
32
33
34
35
36
37
38
# File 'lib/utilrb/logger/hierarchy.rb', line 30

def deregister_log_child(child)
    log_children.delete_if do |ref|
        begin
            ref.__getobj__ == child
        rescue WeakRef::RefError
            true
        end
    end
end

#each_log_childObject



40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/utilrb/logger/hierarchy.rb', line 40

def each_log_child
    return enum_for(__method__) if !block_given?

    log_children.delete_if do |ref|
        begin
            yield(ref.__getobj__)
            false
        rescue WeakRef::RefError
            true
        end
    end
end

#loggerObject



91
92
93
94
95
96
97
# File 'lib/utilrb/logger/hierarchy.rb', line 91

def logger
    if defined?(@logger) && @logger
        return @logger
    elsif defined?(@__utilrb_hierarchy__default_logger) && @__utilrb_hierarchy__default_logger
        return @__utilrb_hierarchy__default_logger
    end
end

#logger=(new_logger) ⇒ Object

Allows to change the logger object at this level of the hierarchy

This is usually not used directly: a new logger can be created with Hierarchy#make_own_logger and removed with Hierarchy#reset_own_logger



74
75
76
77
# File 'lib/utilrb/logger/hierarchy.rb', line 74

def logger=(new_logger)
    @logger = new_logger
    reset_children_default_logger
end

#make_own_logger(new_progname = nil, new_level = nil) ⇒ Object

Makes it so that this level of the module hierarchy has its own logger. If new_progname and/or new_level are nil, the associated value are taken from the parent’s logger.



15
16
17
18
19
20
21
22
23
24
# File 'lib/utilrb/logger/hierarchy.rb', line 15

def make_own_logger(new_progname = nil, new_level = nil)
    new_logger = @logger || self.logger.dup
    if new_progname
        new_logger.progname = new_progname
    end
    if new_level
        new_logger.level = new_level
    end
    self.logger = new_logger
end

#register_log_child(child) ⇒ Object



26
27
28
# File 'lib/utilrb/logger/hierarchy.rb', line 26

def register_log_child(child)
    log_children << WeakRef.new(child)
end

#reset_children_default_loggerObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Resets the default logger of this context’s children

This is called whenever the context children is reset, since the cached default logger is now invalid



59
60
61
62
63
64
65
66
67
68
# File 'lib/utilrb/logger/hierarchy.rb', line 59

def reset_children_default_logger
    children = log_children
    @log_children = Array.new
    children.each do |ref|
        begin
            ref.__getobj__.reset_default_logger
        rescue WeakRef::RefError
        end
    end
end

#reset_default_loggerObject



85
86
87
88
89
# File 'lib/utilrb/logger/hierarchy.rb', line 85

def reset_default_logger
    @__utilrb_hierarchy__default_logger = nil
    @parent_module.deregister_log_child(self) if @parent_module
    reset_children_default_logger
end

#reset_own_loggerObject

Removes a logger defined at this level of the module hierarchy. The logging methods will now access the parent’s module logger.



81
82
83
# File 'lib/utilrb/logger/hierarchy.rb', line 81

def reset_own_logger
    self.logger = nil
end