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
- .color(severity) ⇒ Object
- .color=(value) ⇒ Object
- .color? ⇒ Boolean
- .log_formatter ⇒ Object
- .log_level ⇒ Object
- .logger ⇒ Object
-
.patch_for_old_ruby(logger) ⇒ Object
Patches the ‘::Logger` in older Ruby versions to accept log level as a `String`.
Class Method Details
.color(severity) ⇒ Object
58 59 60 61 62 63 64 65 66 67 |
# File 'lib/yle_tf/logger.rb', line 58 def self.color(severity) return if !color? case severity.to_s when 'FATAL', 'ERROR' :red when 'WARN' :brown end end |
.color=(value) ⇒ Object
54 55 56 |
# File 'lib/yle_tf/logger.rb', line 54 def self.color=(value) @color = value end |
.color? ⇒ Boolean
50 51 52 |
# File 'lib/yle_tf/logger.rb', line 50 def self.color? @color end |
.log_formatter ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/yle_tf/logger.rb', line 38 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_level ⇒ Object
32 33 34 35 36 |
# File 'lib/yle_tf/logger.rb', line 32 def self.log_level (ENV['TF_DEBUG'] && 'DEBUG') || \ ENV['TF_LOG'] || \ 'INFO' end |
.logger ⇒ Object
24 25 26 27 28 29 30 |
# File 'lib/yle_tf/logger.rb', line 24 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`
71 72 73 74 75 76 |
# File 'lib/yle_tf/logger.rb', line 71 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 |