class Gitlab::QA::TestLogger
Common test logger implementation
def console_logger(level:, source:)
-
(ActiveSupport::Logger)
-
Parameters:
-
source
(String
) -- -
level
(
) --
def console_logger(level:, source:) ActiveSupport::Logger.new($stdout, level: level, datetime_format: TIME_FORMAT).tap do |logger| logger.formatter = proc do |severity, datetime, progname, msg| msg_prefix = message_prefix(datetime, source, severity) Rainbow(msg_prefix).public_send(LEVEL_COLORS.fetch(severity, :silver)) + "#{msg}\n" # rubocop:disable GitlabSecurity/PublicSend end end end
def file_logger(source:, path:)
-
(ActiveSupport::Logger)
-
Parameters:
-
path
(String
) -- -
source
(String
) --
def file_logger(source:, path:) log_file = "#{path}/#{source.downcase.tr(' ', '-')}.log" ActiveSupport::Logger.new(log_file, level: :debug, datetime_format: TIME_FORMAT).tap do |logger| logger.formatter = proc do |severity, datetime, progname, msg| msg_prefix = message_prefix(datetime, source, severity) "#{msg_prefix}#{msg}\n".gsub(/\e\[(\d+)(?:;\d+)*m/, "") end end end
def logger(level: :info, source: 'Gitlab QA', path: 'tmp')
-
(ActiveSupport::Logger)
-
Parameters:
-
source
(String
) -- -
level
(
) --
def logger(level: :info, source: 'Gitlab QA', path: 'tmp') console_log = console_logger(level: level, source: source) file_log = file_logger(source: source, path: path) console_log.extend(ActiveSupport::Logger.broadcast(file_log)) end
def message_prefix(date, source, severity)
-
(String)
-
Parameters:
-
severity
(String
) -- -
source
(String
) -- -
date
(DateTime
) --
Other tags:
- Note: - when outputted, the date will be formatted as "Jun 07 2022 11:30:00 UTC"
def message_prefix(date, source, severity) "[#{date.strftime('%h %d %Y %H:%M:%S %Z')} (#{source})] #{severity.ljust(5)} -- " end