module Telemetry::Logger::Levels
Public Class Methods
build_level_index()
click to toggle source
# 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)
click to toggle source
# File lib/telemetry/logger/levels.rb, line 31 def self.define_level(level, cls) cls.send :define_method, level do |message| write_level(__method__, message) end end
included(cls)
click to toggle source
# File lib/telemetry/logger/levels.rb, line 25 def self.included(cls) levels.each do |level| define_level level, cls end end
level_index()
click to toggle source
# File lib/telemetry/logger/levels.rb, line 37 def self.level_index @level_index ||= build_level_index end
levels()
click to toggle source
# 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
Public Instance Methods
implementer()
click to toggle source
# File lib/telemetry/logger/levels.rb, line 120 def implementer self end
level_index()
click to toggle source
# File lib/telemetry/logger/levels.rb, line 51 def level_index Levels.level_index end
metadata(level)
click to toggle source
# File lib/telemetry/logger/levels.rb, line 92 def metadata(level) if Defaults.metadata == 'off' return nil elsif Defaults.metadata == '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)
click to toggle source
# File lib/telemetry/logger/levels.rb, line 112 def omit?(level) Defaults.optional == 'off' && optional_level?(level) end
optional_level?(level)
click to toggle source
# File lib/telemetry/logger/levels.rb, line 116 def optional_level?(level) String(level).start_with?('opt_') end
ordinal(level)
click to toggle source
# 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)
click to toggle source
# File lib/telemetry/logger/levels.rb, line 108 def sufficient_level?(level_ordinal) level_ordinal >= level_number end
write_level(level, message)
click to toggle source
# File lib/telemetry/logger/levels.rb, line 67 def write_level(level, message) level_ordinal = ordinal(level) write_message(message, level) if sufficient_level?(level_ordinal) && !omit?(level) end
write_message(message, level)
click to toggle source
# File lib/telemetry/logger/levels.rb, line 72 def write_message(message, level) message = message.to_s if message.length == 0 message = '(empty log message)' end message.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") message = implementer.format(line, level) metadata = metadata(level) header = implementer.format_metadata(metadata) implementer.write "#{header}#{message}" end end