Skip to content

Commit

Permalink
Merge pull request #82 from itamae-kitchen/set-log-color
Browse files Browse the repository at this point in the history
Set log color explicitly
  • Loading branch information
ryotarai committed Feb 15, 2015
2 parents e15fa31 + 83b7c8f commit 1176625
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 15 deletions.
39 changes: 26 additions & 13 deletions lib/itamae/logger.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ module Logger
class Formatter
attr_accessor :colored
attr_accessor :depth
attr_accessor :color

INDENT_LENGTH = 3

Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -73,7 +86,7 @@ def log_device=(value)
@log_device = value
@logger = create_logger
end

private

def create_logger
Expand Down
8 changes: 6 additions & 2 deletions lib/itamae/resource/base.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 1176625

Please sign in to comment.