Skip to content

Instantly share code, notes, and snippets.

@ab
Forked from janlelis/logger-colors.rb
Created July 23, 2012 01:53
Show Gist options
  • Save ab/3161648 to your computer and use it in GitHub Desktop.
Save ab/3161648 to your computer and use it in GitHub Desktop.
logger-colors
# Colorizes the output of the standard library logger, depending on the logger level:
# To adjust the colors, look at Logger::Colors::SCHEMA and Logger::Colors::constants
class ColoredLogger < Logger
module Colors
VERSION = '1.0.1'
NOTHING = '0;0'
BLACK = '0;30'
RED = '0;31'
GREEN = '0;32'
BROWN = '0;33'
BLUE = '0;34'
PURPLE = '0;35'
CYAN = '0;36'
LIGHT_GRAY = '0;37'
DARK_GRAY = '1;30'
LIGHT_RED = '1;31'
LIGHT_GREEN = '1;32'
YELLOW = '1;33'
LIGHT_BLUE = '1;34'
LIGHT_PURPLE = '1;35'
LIGHT_CYAN = '1;36'
WHITE = '1;37'
SCHEMA = {
STDOUT => %w[nothing green brown red purple cyan],
#STDERR => %w[nothing green yellow light_red light_purple light_cyan],
STDERR => %w[dark_gray nothing yellow light_red light_purple light_cyan],
}
end
alias format_message_colorless format_message
def format_message(level, *args)
if self.class::Colors::SCHEMA[@logdev.dev] && @logdev.dev.tty?
begin
index = self.class.const_get(level.sub('ANY','UNKNOWN'))
color_name = self.class::Colors::SCHEMA[@logdev.dev][index]
color = self.class::Colors.const_get(color_name.to_s.upcase)
rescue NameError
color = '0;0'
end
"\e[#{color}m#{format_message_colorless(level, *args)}\e[0;0m"
else
format_message_colorless(level, *args)
end
end
def rainbow(*args)
SEV_LABEL.each_with_index do |level, i|
add(i, *args)
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment