Class: ExtendedLogger::Registry
- Inherits:
-
Module
- Object
- Module
- ExtendedLogger::Registry
- Defined in:
- lib/extended_logger/registry.rb
Instance Attribute Summary collapse
-
#attr_name ⇒ Object
readonly
Returns the value of attribute attr_name.
-
#logger_class ⇒ Object
readonly
Returns the value of attribute logger_class.
-
#sink ⇒ Object
readonly
Returns the value of attribute sink.
Class Method Summary collapse
Instance Method Summary collapse
- #build_logger(key) ⇒ Object
- #cache ⇒ Object
- #clear ⇒ Object
- #extended(object) ⇒ Object
- #get(receiver = nil) ⇒ Object
- #included(cls) ⇒ Object
-
#initialize(logger_class, sink, attr_name) ⇒ Registry
constructor
A new instance of Registry.
- #key(receiver) ⇒ Object
- #level ⇒ Object
- #level=(reference) ⇒ Object
- #levels ⇒ Object
- #lower_verbosity ⇒ Object
- #raise_verbosity ⇒ Object
- #set(receiver, value) ⇒ Object
Constructor Details
#initialize(logger_class, sink, attr_name) ⇒ Registry
Returns a new instance of Registry.
7 8 9 10 11 |
# File 'lib/extended_logger/registry.rb', line 7 def initialize logger_class, sink, attr_name @attr_name = attr_name @logger_class = logger_class @sink = sink end |
Instance Attribute Details
#attr_name ⇒ Object (readonly)
Returns the value of attribute attr_name.
3 4 5 |
# File 'lib/extended_logger/registry.rb', line 3 def attr_name @attr_name end |
#logger_class ⇒ Object (readonly)
Returns the value of attribute logger_class.
4 5 6 |
# File 'lib/extended_logger/registry.rb', line 4 def logger_class @logger_class end |
#sink ⇒ Object (readonly)
Returns the value of attribute sink.
5 6 7 |
# File 'lib/extended_logger/registry.rb', line 5 def sink @sink end |
Class Method Details
.build(logger_class, attr_name: nil, **sink_arguments) ⇒ Object
13 14 15 16 17 18 19 20 21 |
# File 'lib/extended_logger/registry.rb', line 13 def self.build logger_class, attr_name: nil, **sink_arguments attr_name ||= :logger sink = logger_class.sink **sink_arguments instance = new logger_class, sink, attr_name instance.send :const_set, :Logger, logger_class instance end |
Instance Method Details
#build_logger(key) ⇒ Object
23 24 25 26 27 |
# File 'lib/extended_logger/registry.rb', line 23 def build_logger key logger = logger_class.new sink logger.label = key.name logger end |
#cache ⇒ Object
29 30 31 32 33 |
# File 'lib/extended_logger/registry.rb', line 29 def cache @cache ||= Hash.new do |cache, key| cache[key] = build_logger key end end |
#clear ⇒ Object
35 36 37 |
# File 'lib/extended_logger/registry.rb', line 35 def clear cache.clear end |
#extended(object) ⇒ Object
67 68 69 |
# File 'lib/extended_logger/registry.rb', line 67 def extended object included object.singleton_class end |
#get(receiver = nil) ⇒ Object
71 72 73 74 75 76 77 |
# File 'lib/extended_logger/registry.rb', line 71 def get receiver=nil receiver ||= TOPLEVEL_BINDING.receiver key = self.key receiver cache[key] end |
#included(cls) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/extended_logger/registry.rb', line 39 def included cls cls.class_exec self do |registry| ivar_name = "@#{registry.attr_name}" cvar_name = "@@#{registry.attr_name}" attr_writer registry.attr_name define_method registry.attr_name do if instance_variable_defined? ivar_name return instance_variable_get ivar_name end if self.is_a? Module target = self else target = self.class end if target.class_variable_defined? cvar_name return target.class_variable_get cvar_name end logger = registry.get self self.class.class_variable_set cvar_name, logger end end end |
#key(receiver) ⇒ Object
79 80 81 82 83 84 85 |
# File 'lib/extended_logger/registry.rb', line 79 def key receiver if receiver.is_a? Module receiver else receiver.class end end |
#level ⇒ Object
87 88 89 |
# File 'lib/extended_logger/registry.rb', line 87 def level sink.level end |
#level=(reference) ⇒ Object
91 92 93 |
# File 'lib/extended_logger/registry.rb', line 91 def level= reference sink.level = levels.resolve reference end |
#levels ⇒ Object
95 96 97 |
# File 'lib/extended_logger/registry.rb', line 95 def levels sink.levels end |
#lower_verbosity ⇒ Object
99 100 101 |
# File 'lib/extended_logger/registry.rb', line 99 def lower_verbosity sink.lower_verbosity end |
#raise_verbosity ⇒ Object
103 104 105 |
# File 'lib/extended_logger/registry.rb', line 103 def raise_verbosity sink.raise_verbosity end |
#set(receiver, value) ⇒ Object
107 108 109 110 111 |
# File 'lib/extended_logger/registry.rb', line 107 def set receiver, value key = self.key receiver cache[key] = value end |