lib/gitlab/qa/runtime/logger.rb



# frozen_string_literal: true

require 'logger'
require 'forwardable'
require'rainbow/refinement'

module Gitlab
  module QA
    module Runtime
      module Logger
        extend SingleForwardable
        using Rainbow

        def_delegators :logger, :debug, :info, :warn, :error, :fatal, :unknown

        singleton_class.module_eval do
          attr_writer :logger

          def logger
            Rainbow.enabled = Runtime::Env.colorized_logs?

            @logger ||= ::Logger.new($stdout).tap do |logger|
              logger.level = Runtime::Env.debug? ? ::Logger::DEBUG : ::Logger::INFO

              logger.formatter = proc do |severity, datetime, progname, msg|
                date_format = datetime.strftime("%Y-%m-%d %H:%M:%S")

                "[date=#{date_format} from=GitLab QA] #{severity.ljust(5)}-- ".yellow + "#{msg}\n"
              end
            end
          end
        end
      end
    end
  end
end