-
-
Save ab/3161648 to your computer and use it in GitHub Desktop.
logger-colors
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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