Module: YleTf::Logger

Extended by:
Forwardable
Defined in:
lib/yle_tf/logger.rb,
lib/yle_tf/logger/colorize.rb

Overview

Logger for debug, error, etc. outputs. Prints to STDERR, so it does not mess with e.g. ‘terraform output`.

Defined Under Namespace

Modules: Colorize

Constant Summary collapse

LEVELS =
%i[debug info warn error fatal].freeze
DEVICE =
STDERR

Class Method Summary collapse

Class Method Details

.color(severity) ⇒ Object



56
57
58
59
60
61
62
63
64
65
# File 'lib/yle_tf/logger.rb', line 56

def self.color(severity)
  return if !color?

  case severity.to_s
  when 'FATAL', 'ERROR'
    :red
  when 'WARN'
    :brown
  end
end

.color=(value) ⇒ Object



52
53
54
# File 'lib/yle_tf/logger.rb', line 52

def self.color=(value)
  @color = value
end

.color?Boolean

Returns:

  • (Boolean)


48
49
50
# File 'lib/yle_tf/logger.rb', line 48

def self.color?
  @color
end

.log_formatterObject



36
37
38
39
40
41
42
43
44
45
46
# File 'lib/yle_tf/logger.rb', line 36

def self.log_formatter
  proc do |severity, _datetime, progname, msg|
    msg = Colorize.colorize(msg, color(severity))

    if progname
      "#{severity}: [#{progname}] #{msg}\n"
    else
      "#{severity}: #{msg}\n"
    end
  end
end

.log_levelObject



30
31
32
33
34
# File 'lib/yle_tf/logger.rb', line 30

def self.log_level
  (ENV['TF_DEBUG'] && 'DEBUG') || \
    ENV['TF_LOG'] || \
    'INFO'
end

.loggerObject



22
23
24
25
26
27
28
# File 'lib/yle_tf/logger.rb', line 22

def self.logger
  @logger ||= ::Logger.new(DEVICE).tap do |logger|
    patch_for_old_ruby(logger)
    logger.level = log_level
    logger.formatter = log_formatter
  end
end

.patch_for_old_ruby(logger) ⇒ Object

Patches the ‘::Logger` in older Ruby versions to accept log level as a `String`



69
70
71
72
73
74
# File 'lib/yle_tf/logger.rb', line 69

def self.patch_for_old_ruby(logger)
  if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.3')
    require_relative '../../vendor/logger_level_patch'
    logger.extend(LoggerLevelPatch)
  end
end