Class: Gitlab::QA::TestLogger

Inherits:
Object
  • Object
show all
Defined in:
lib/gitlab/qa/test_logger.rb

Overview

Common test logger implementation

Constant Summary collapse

LEVEL_COLORS =
{
  "DEBUG" => :magenta,
  "INFO" => :green,
  "WARN" => :yellow,
  "ERROR" => :red,
  "FATAL" => :indianred
}.freeze

Class Method Summary collapse

Class Method Details

.logger(level: ::Logger::INFO, source: 'Gitlab QA') ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/gitlab/qa/test_logger.rb', line 21

def self.logger(level: ::Logger::INFO, source: 'Gitlab QA')
  ::Logger.new($stdout).tap do |logger|
    logger.level = level

    logger.formatter = proc do |severity, datetime, progname, msg|
      date_format = datetime.strftime("%Y-%m-%d %H:%M:%S")
      msg_prefix = "[date=#{date_format} from=#{source}] #{severity.ljust(5)} -- "

      Rainbow(msg_prefix).public_send(LEVEL_COLORS.fetch(severity, :silver)) + "#{msg}\n" # rubocop:disable GitlabSecurity/PublicSend
    end
  end
end