Class: Log
- Inherits:
-
Object
show all
- Extended by:
- Registry, SubjectName, Telemetry::Register
- Includes:
- Dependency, Initializer, Filter, Level, Levels, Tags, Write
- Defined in:
- lib/log.rb,
lib/log/log.rb,
lib/log/tags.rb,
lib/log/level.rb,
lib/log/write.rb,
lib/log/filter.rb,
lib/log/format.rb,
lib/log/levels.rb,
lib/log/defaults.rb,
lib/log/registry.rb,
lib/log/telemetry.rb,
lib/log/substitute.rb,
lib/log/controls/log.rb,
lib/log/format/color.rb,
lib/log/subject_name.rb,
lib/log/controls/time.rb,
lib/log/controls/subject.rb
Defined Under Namespace
Modules: Controls, Defaults, Filter, Format, Level, Levels, Registry, SubjectName, Substitute, Tags, Telemetry, Write
Classes: Error
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Registry
get, register, registry
subject_name
register_telemetry_sink
Methods included from Write
#puts, #write
Methods included from Filter
#log_all_tags?, #log_untagged?, #precedent?, #tags_intersect?, #write_level?, #write_tag?
Methods included from Tags
#excluded_tags, #included_tags, #tag=, #tag?, #tags, #tags=, #tags?
Methods included from Level
#add_level, #assure_level, #level, #level=, #level?, #logger_ordinal, #max_level, #max_level!, #min_level, #min_level!, #no_level!, #no_ordinal, #ordinal, #remove_level
Methods included from Levels
included, #level_names, #levels, #levels?
Instance Attribute Details
#device ⇒ Object
42
43
44
|
# File 'lib/log/log.rb', line 42
def device
@device ||= Defaults.device
end
|
Class Method Details
.bare(subject) ⇒ Object
64
65
66
|
# File 'lib/log/log.rb', line 64
def self.bare(subject)
no_defaults(subject)
end
|
.build(subject) ⇒ Object
50
51
52
53
54
55
56
|
# File 'lib/log/log.rb', line 50
def self.build(subject)
subject = subject_name(subject)
instance = new(subject)
Clock::UTC.configure(instance)
set_defaults(instance)
instance
end
|
68
69
70
71
72
73
|
# File 'lib/log/log.rb', line 68
def self.configure(receiver, attr_name: nil)
attr_name ||= :logger
instance = get(receiver)
receiver.public_send("#{attr_name}=", instance)
instance
end
|
.inherited(cls) ⇒ Object
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/log/log.rb', line 16
def self.inherited(cls)
cls.class_exec do
dependency_module = Module.new do
define_singleton_method :included do |reciever_class|
reciever_class.class_exec do
::Dependency::Attribute.define(self, :logger, cls)
define_method :logger do
@logger ||= cls.configure self
end
end
end
end
const_set :Dependency, dependency_module
end
end
|
.no_defaults(subject) ⇒ Object
58
59
60
61
62
|
# File 'lib/log/log.rb', line 58
def self.no_defaults(subject)
instance = new(subject)
Clock::UTC.configure(instance)
instance
end
|
.set_defaults(logger) ⇒ Object
109
110
111
112
113
|
# File 'lib/log/log.rb', line 109
def self.set_defaults(logger)
logger.class.add_levels(logger)
logger.level = Defaults.level
logger.tags = Defaults.tags
end
|
Instance Method Details
#call(message = nil, level = nil, tag: nil, tags: nil, &blk) ⇒ Object
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
# File 'lib/log/log.rb', line 75
def call(message=nil, level=nil, tag: nil, tags: nil, &blk)
tag = Array(tag)
tags = Array(tags)
tags = tags + tag
assure_level(level)
tag!(tags)
if write?(level, tags)
if block_given?
message = blk.call
end
raise ArgumentError, "Log message not provided" if message.nil?
write(message, level, tags)
end
end
|
#clear ⇒ Object
102
103
104
105
106
107
|
# File 'lib/log/log.rb', line 102
def clear
level_names.each do |level_name|
remove_level(level_name)
end
self.level = nil
end
|
#tag!(tags) ⇒ Object
94
95
96
|
# File 'lib/log/log.rb', line 94
def tag!(tags)
tags
end
|
#telemetry ⇒ Object
46
47
48
|
# File 'lib/log/log.rb', line 46
def telemetry
@telemetry ||= ::Telemetry.build
end
|
#write?(message_level, message_tags) ⇒ Boolean
98
99
100
|
# File 'lib/log/log.rb', line 98
def write?(message_level, message_tags)
write_level?(message_level) && write_tag?(message_tags)
end
|