1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
# frozen_string_literal: true
require "yell"
require "rainbow"
module HTMLProofer
class Log
include Yell::Loggable
STDOUT_LEVELS = [:debug, :info, :warn].freeze
STDERR_LEVELS = [:error, :fatal].freeze
def initialize(log_level)
@logger = Yell.new(
format: false,
name: "HTMLProofer",
level: "gte.#{log_level}",
) do |l|
l.adapter(:stdout, level: "lte.warn")
l.adapter(:stderr, level: "gte.error")
end
end
def log(level, message)
log_with_color(level, message)
end
def log_with_color(level, message)
@logger.send(level, colorize(level, message))
end
def colorize(level, message)
color = case level
when :debug
:cyan
when :info
:blue
when :warn
:yellow
when :error, :fatal
:red
end
if STDOUT_LEVELS.include?(level) ||
STDERR_LEVELS.include?(level)
Rainbow(message).send(color)
else
message
end
end
# dumb override to play nice with Typhoeus/Ethon
def debug(message = nil)
log(:debug, message) unless message.nil?
end
end
end
|