File: log.rb

package info (click to toggle)
ruby-html-proofer 5.2.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 22,524 kB
  • sloc: ruby: 4,389; sh: 8; makefile: 4; javascript: 1; php: 1
file content (57 lines) | stat: -rw-r--r-- 1,179 bytes parent folder | download
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