Class: Log
- Inherits:
-
Object
show all
- Extended by:
- Registry, SubjectName, Telemetry::Register
- Includes:
- 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
#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
39
40
41
|
# File 'lib/log/log.rb', line 39
def device
@device ||= Defaults.device
end
|
Class Method Details
.bare(subject) ⇒ Object
61
62
63
|
# File 'lib/log/log.rb', line 61
def self.bare(subject)
no_defaults(subject)
end
|
.build(subject) ⇒ Object
47
48
49
50
51
52
53
|
# File 'lib/log/log.rb', line 47
def self.build(subject)
subject = subject_name(subject)
instance = new(subject)
Clock::UTC.configure(instance)
set_defaults(instance)
instance
end
|
65
66
67
68
69
70
|
# File 'lib/log/log.rb', line 65
def self.configure(receiver, attr_name: nil)
attr_name ||= :logger
instance = get(receiver)
receiver.public_send("#{attr_name}=", instance)
instance
end
|
.inherited(cls) ⇒ Object
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/log/log.rb', line 13
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 :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
55
56
57
58
59
|
# File 'lib/log/log.rb', line 55
def self.no_defaults(subject)
instance = new(subject)
Clock::UTC.configure(instance)
instance
end
|
.set_defaults(logger) ⇒ Object
106
107
108
109
110
|
# File 'lib/log/log.rb', line 106
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
# File 'lib/log/log.rb', line 72
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
99
100
101
102
103
104
|
# File 'lib/log/log.rb', line 99
def clear
level_names.each do |level_name|
remove_level(level_name)
end
self.level = nil
end
|
#tag!(tags) ⇒ Object
91
92
93
|
# File 'lib/log/log.rb', line 91
def tag!(tags)
tags
end
|
#telemetry ⇒ Object
43
44
45
|
# File 'lib/log/log.rb', line 43
def telemetry
@telemetry ||= ::Telemetry.build
end
|
#write?(message_level, message_tags) ⇒ Boolean
95
96
97
|
# File 'lib/log/log.rb', line 95
def write?(message_level, message_tags)
write_level?(message_level) && write_tag?(message_tags)
end
|