diff --git a/lib/itamae/logger.rb b/lib/itamae/logger.rb index 87eab9f1..47cc1ad8 100644 --- a/lib/itamae/logger.rb +++ b/lib/itamae/logger.rb @@ -7,6 +7,7 @@ module Logger class Formatter attr_accessor :colored attr_accessor :depth + attr_accessor :color INDENT_LENGTH = 3 @@ -19,7 +20,7 @@ def initialize(*args) def call(severity, datetime, progname, msg) log = "%s : %s%s\n" % ["%5s" % severity, ' ' * INDENT_LENGTH * depth , msg2str(msg)] if colored - color(log, severity) + colorize(log, severity) else log end @@ -32,6 +33,14 @@ def indent @depth -= 1 end + def color(code) + @prev_color = @color + @color = code + yield + ensure + @color = @prev_color + end + private def msg2str(msg) case msg @@ -45,17 +54,21 @@ def msg2str(msg) end end - def color(str, severity) - color_code = case severity - when "INFO" - :green - when "WARN" - :magenta - when "ERROR" - :red - else - :clear - end + def colorize(str, severity) + if @color + color_code = @color + else + color_code = case severity + when "INFO" + :clear + when "WARN" + :magenta + when "ERROR" + :red + else + :clear + end + end ANSI.public_send(color_code) { str } end end @@ -73,7 +86,7 @@ def log_device=(value) @log_device = value @logger = create_logger end - + private def create_logger diff --git a/lib/itamae/resource/base.rb b/lib/itamae/resource/base.rb index 0c295b1d..9bab4d83 100644 --- a/lib/itamae/resource/base.rb +++ b/lib/itamae/resource/base.rb @@ -205,11 +205,15 @@ def show_differences if current_value.nil? && value.nil? # ignore elsif current_value.nil? && !value.nil? - Logger.info "#{key} will be '#{value}'" + Logger.formatter.color :green do + Logger.info "#{key} will be '#{value}'" + end elsif current_value == value || value.nil? Logger.debug "#{key} will not change (current value is '#{current_value}')" else - Logger.info "#{key} will change from '#{current_value}' to '#{value}'" + Logger.formatter.color :green do + Logger.info "#{key} will change from '#{current_value}' to '#{value}'" + end end end end