Class: ExtendedLogger

Inherits:
Object
  • Object
show all
Defined in:
lib/extended_logger/rule.rb,
lib/extended_logger/sink.rb,
lib/extended_logger/level.rb,
lib/extended_logger/define.rb,
lib/extended_logger/logger.rb,
lib/extended_logger/message.rb,
lib/extended_logger/controls.rb,
lib/extended_logger/defaults.rb,
lib/extended_logger/registry.rb,
lib/extended_logger/level/set.rb,
lib/extended_logger/serializer.rb,
lib/extended_logger/color_scheme.rb,
lib/extended_logger/extended_logger.rb,
lib/extended_logger/verbosity_threshold.rb,
lib/extended_logger/serializer/text_formatter.rb

Defined Under Namespace

Modules: Assertions, Controls, Defaults, Rule Classes: ColorScheme, Define, Level, Message, Registry, Serializer, Sink, VerbosityThreshold

Constant Summary collapse

Logger =
self.define

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(sink) ⇒ ExtendedLogger



7
8
9
# File 'lib/extended_logger/extended_logger.rb', line 7

def initialize sink
  @sink = sink
end

Instance Attribute Details

#clockObject



53
54
55
# File 'lib/extended_logger/extended_logger.rb', line 53

def clock
  @clock ||= Time
end

#labelObject

Returns the value of attribute label.



3
4
5
# File 'lib/extended_logger/extended_logger.rb', line 3

def label
  @label
end

#levelObject



61
62
63
# File 'lib/extended_logger/extended_logger.rb', line 61

def level
  @level ||= levels.default
end

#sinkObject (readonly)

Returns the value of attribute sink.



5
6
7
# File 'lib/extended_logger/extended_logger.rb', line 5

def sink
  @sink
end

Class Method Details

.build(device = nil, level: nil, **sink_arguments) ⇒ Object



11
12
13
14
15
16
17
# File 'lib/extended_logger/extended_logger.rb', line 11

def self.build device=nil, level: nil, **sink_arguments
  sink = self.sink device: device, **sink_arguments

  instance = new sink
  instance.level = level if level
  instance
end

.define(levels = nil, **sink_defaults) ⇒ Object



2
3
4
5
6
7
8
# File 'lib/extended_logger/define.rb', line 2

def self.define levels=nil, **sink_defaults
  levels ||= Defaults.levels

  subclass = Class.new self
  Define.(subclass, levels, sink_defaults)
  subclass
end

.empty_messageObject



19
20
21
# File 'lib/extended_logger/extended_logger.rb', line 19

def self.empty_message
  '<empty message>'
end

.levelsObject



23
24
# File 'lib/extended_logger/extended_logger.rb', line 23

def self.levels
end

.sink(device: nil, **sink_arguments) ⇒ Object



26
27
28
29
30
31
32
# File 'lib/extended_logger/extended_logger.rb', line 26

def self.sink device: nil, **sink_arguments
  sink_arguments = sink_defaults.merge sink_arguments

  sink_arguments[:levels] ||= levels if levels

  Sink.build device, **sink_arguments
end

.sink_defaultsObject



34
35
36
# File 'lib/extended_logger/extended_logger.rb', line 34

def self.sink_defaults
  {}
end

Instance Method Details

#<<(message) ⇒ Object



38
39
40
# File 'lib/extended_logger/extended_logger.rb', line 38

def << message
  sink << message
end

#add(level, prose = nil, label: nil, &block) ⇒ Object



42
43
44
45
46
47
48
49
50
51
# File 'lib/extended_logger/extended_logger.rb', line 42

def add level, prose=nil, label: nil, &block
  block ||= ->{ prose }
  label ||= self.label

  time = clock.now

  message = Message.new block, level, time, label

  self << message
end

#deviceObject



57
58
59
# File 'lib/extended_logger/extended_logger.rb', line 57

def device
  sink.device
end