Module: Telemetry::Logger::Levels
- Included in:
- ConsoleLogger, NullLogger
- Defined in:
- lib/telemetry/logger/levels.rb
Defined Under Namespace
Modules: Defaults
Class Method Summary collapse
- .build_level_index ⇒ Object
- .define_level(level, cls) ⇒ Object
- .included(cls) ⇒ Object
- .level_index ⇒ Object
- .levels ⇒ Object
Instance Method Summary collapse
- #implementer ⇒ Object
- #level_index ⇒ Object
- #metadata(level) ⇒ Object
- #omit?(level) ⇒ Boolean
- #optional_level?(level) ⇒ Boolean
- #ordinal(level) ⇒ Object
- #sufficient_level?(level_ordinal) ⇒ Boolean
- #write_level(level, message) ⇒ Object
- #write_message(message, level) ⇒ Object
Class Method Details
.build_level_index ⇒ Object
41 42 43 44 45 46 47 48 49 |
# File 'lib/telemetry/logger/levels.rb', line 41 def self.build_level_index table = {} levels.each_with_index do |level, index| table[level] = index end table end |
.define_level(level, cls) ⇒ Object
31 32 33 34 35 |
# File 'lib/telemetry/logger/levels.rb', line 31 def self.define_level(level, cls) cls.send :define_method, level do || write_level(__method__, ) end end |
.included(cls) ⇒ Object
25 26 27 28 29 |
# File 'lib/telemetry/logger/levels.rb', line 25 def self.included(cls) levels.each do |level| define_level level, cls end end |
.level_index ⇒ Object
37 38 39 |
# File 'lib/telemetry/logger/levels.rb', line 37 def self.level_index @level_index ||= build_level_index end |
.levels ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/telemetry/logger/levels.rb', line 4 def self.levels [ :todo, :fubar, :obsolete, :data, :trace, :debug, :opt_data, :opt_trace, :opt_debug, :info, :pass, :fail, :focus, :warn, :error, :fatal ] end |
Instance Method Details
#implementer ⇒ Object
120 121 122 |
# File 'lib/telemetry/logger/levels.rb', line 120 def implementer self end |
#level_index ⇒ Object
51 52 53 |
# File 'lib/telemetry/logger/levels.rb', line 51 def level_index Levels.level_index end |
#metadata(level) ⇒ Object
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/telemetry/logger/levels.rb', line 92 def (level) if Defaults. == 'off' return nil elsif Defaults. == 'minimal' return "#{name.split('::').last}: " else level = String(level) if level.start_with?('opt_') level = "(#{level.split('_').last})" end return "[#{implementer.clock.iso8601}] #{name} #{level.upcase}: " end end |
#omit?(level) ⇒ Boolean
112 113 114 |
# File 'lib/telemetry/logger/levels.rb', line 112 def omit?(level) Defaults.optional == 'off' && optional_level?(level) end |
#optional_level?(level) ⇒ Boolean
116 117 118 |
# File 'lib/telemetry/logger/levels.rb', line 116 def optional_level?(level) String(level).start_with?('opt_') end |
#ordinal(level) ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/telemetry/logger/levels.rb', line 55 def ordinal(level) if [:_min, :_max].include?(level) if level == :_min return level_index.values.last else return level_index.values.first end end level_index[level] end |
#sufficient_level?(level_ordinal) ⇒ Boolean
108 109 110 |
# File 'lib/telemetry/logger/levels.rb', line 108 def sufficient_level?(level_ordinal) level_ordinal >= level_number end |
#write_level(level, message) ⇒ Object
67 68 69 70 |
# File 'lib/telemetry/logger/levels.rb', line 67 def write_level(level, ) level_ordinal = ordinal(level) (, level) if sufficient_level?(level_ordinal) && !omit?(level) end |
#write_message(message, level) ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/telemetry/logger/levels.rb', line 72 def (, level) = .to_s if .length == 0 = '(empty log message)' end .each_line do |line| line = line.chomp("\n") unless line.end_with?("\r\n") || line == "\n" line = line.gsub("\r", "\\r") line = line.gsub("\n", "\\n") = implementer.format(line, level) = (level) header = implementer.() implementer.write "#{header}#{}" end end |