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
|
# frozen_string_literal: true
require 'yell'
require 'rainbow'
module HTMLProofer
class Log
include Yell::Loggable
STDOUT_LEVELS = %i[debug info warn].freeze
STDERR_LEVELS = %i[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) && $stdout.isatty) || \
(STDERR_LEVELS.include?(level) && $stderr.isatty)
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
|