Module: SemanticLogger::Levels

Defined in:
lib/semantic_logger/levels.rb

Constant Summary collapse

LEVELS =

Logging levels in order of most detailed to most severe

%i[trace debug info warn error fatal].freeze
MAPPED_LEVELS =

Map the built-in ‘Logger` levels to SemanticLogger levels.

::Logger::Severity.constants.each_with_object([]) do |constant, levels|
  logger_value = ::Logger::Severity.const_get(constant)
  levels[logger_value] = LEVELS.find_index(constant.downcase.to_sym) || LEVELS.find_index(:error)
end.freeze

Class Method Summary collapse

Class Method Details

.index(level) ⇒ Object

Internal method to return the log level as an internal index Also supports mapping the ::Logger levels to SemanticLogger levels



17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/semantic_logger/levels.rb', line 17

def self.index(level)
  return if level.nil?

  case level
  when Symbol
    LEVELS.index(level)
  when String
    LEVELS.index(level.downcase.to_sym)
  when Integer
    MAPPED_LEVELS[level]
  end ||
    raise(ArgumentError, "Invalid level:#{level.inspect} being requested. Must be one of #{LEVELS.inspect}")
end

.level(level_index) ⇒ Object

Returns the symbolic level for the supplied level index



32
33
34
# File 'lib/semantic_logger/levels.rb', line 32

def self.level(level_index)
  LEVELS[level_index]
end