Module: YleTf::Logger

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

Overview

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

Class Method Summary collapse

Class Method Details

.log_formatterObject



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

def self.log_formatter
  proc do |severity, _datetime, progname, msg|
    if progname
      "[#{progname}] #{severity}: #{msg}\n"
    else
      "#{severity}: #{msg}\n"
    end
  end
end

.log_levelObject



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

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

.loggerObject



15
16
17
18
19
20
21
# File 'lib/yle_tf/logger.rb', line 15

def self.logger
  @logger ||= ::Logger.new(STDERR).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`



41
42
43
44
45
46
# File 'lib/yle_tf/logger.rb', line 41

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