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
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
48 49 50 |
# File 'lib/yle_tf/logger.rb', line 48 def self.color? @color end |
.log_formatter ⇒ Object
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_level ⇒ Object
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 |
.logger ⇒ Object
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 |