Module: Konsierge::Logger

Defined in:
lib/konsierge/logger.rb,
lib/konsierge/logger/version.rb,
lib/konsierge/logger/level_filtered_logger.rb

Defined Under Namespace

Classes: LevelFilteredLogger

Constant Summary collapse

VERSION =
'0.1.0'

Class Method Summary collapse

Class Method Details

.build_default_loggerObject



24
25
26
# File 'lib/konsierge/logger.rb', line 24

def build_default_logger
  ::Logger.new($stdout, formatter: ->(_, _, _, msg) { "#{msg}\n" })
end

.resolve(logger:, log_level:, default_logger: nil) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/konsierge/logger.rb', line 10

def resolve(logger:, log_level:, default_logger: nil)
  level = resolve_level(log_level)
  configured_logger = resolve_config_value(logger)

  return LevelFilteredLogger.new(configured_logger, level: level) if configured_logger

  rails_logger = resolve_rails_logger
  return LevelFilteredLogger.new(rails_logger, level: level) if rails_logger

  backend = default_logger || build_default_logger
  backend.level = level if backend.respond_to?(:level=)
  backend
end

.resolve_config_value(value) ⇒ Object



43
44
45
# File 'lib/konsierge/logger.rb', line 43

def resolve_config_value(value)
  value.respond_to?(:call) ? value.call : value
end

.resolve_level(log_level) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/konsierge/logger.rb', line 28

def resolve_level(log_level)
  level = resolve_config_value(log_level)

  case level
  when Integer
    level
  when String, Symbol
    ::Logger::Severity.const_get(level.to_s.upcase)
  else
    ::Logger::INFO
  end
rescue NameError
  ::Logger::INFO
end