I’ll just leave this here:
module ActiveSupport
# Format the buffered logger with timestamp/severity info.
class BufferedLogger
NUMBER_TO_NAME_MAP = {0=>'meh', 1=>'fyi', 2=>'hmm', 3=>'wtf', 4=>'omg', 5=>'???'}
NUMBER_TO_COLOR_MAP = {0=>'1;30', 1=>'0;36', 2=>'0;33', 3=>'1;33', 4=>'1;31', 5=>'0;37'}
def add(severity, message = nil, progname = nil, &block)
return if @level > severity
sevstring = NUMBER_TO_NAME_MAP[severity]
color = NUMBER_TO_COLOR_MAP[severity]
message = (message || (block && block.call) || progname).to_s
message = "\033[0;37m#{Time.now.to_s(:db)}\033[0m [\033[#{color}m" + sprintf("%-3s","#{sevstring}") + "\033[0m] #{message.strip} (pid:#{$$})\n" unless message[-1] == ?\n
buffer << message
auto_flush
message
end
end
end
(To use, put this code in an initializer in config/initializers and restart. Provides highly-readable, timestamped, colorized logging for your rails app.)