class ZgcpToolkit::Logger

Constants

AVAILABLE_LOGGERS
DEFAULT_BACKTRACE_LIMIT
REGEX_VALID_NAME

Attributes

backtrace_limit[RW]
log_name[R]
loggers[R]

Public Class Methods

create(log_name) { |logger| ... } click to toggle source
# File lib/zgcp_toolkit/logger.rb, line 26
def create(log_name)
  raise InvalidLogName, "Log name is invalid. Log name regex is #{REGEX_VALID_NAME.inspect}" unless valid_name?(log_name.to_s)

  logger = Logger.new(log_name.to_s)

  begin
    yield(logger) if block_given?
  rescue StandardError => e
    Google::Cloud::ErrorReporting.report e
  end

  logger
end
new(log_name) click to toggle source
# File lib/zgcp_toolkit/logger.rb, line 61
def initialize(log_name)
  @log_name = log_name
  @backtrace_limit = DEFAULT_BACKTRACE_LIMIT
  @loggers = ZgcpToolkit::Logger.registered_loggers.map { |logger| logger.new(log_name) }
end
report_error_request(error, request) click to toggle source
# File lib/zgcp_toolkit/logger.rb, line 40
def report_error_request(error, request)
  message = ZgcpToolkit::Formatter::Request.new.format_for_report(request)

  Google::Cloud::ErrorReporting.report error do |event|
    event.message = event.message + "\n\n" + message
  end
end

Private Class Methods

valid_name?(log_name) click to toggle source
# File lib/zgcp_toolkit/logger.rb, line 50
def valid_name?(log_name)
  return true if log_name.match(REGEX_VALID_NAME)
  false
end

Public Instance Methods

error_request(error, request, **args) click to toggle source
# File lib/zgcp_toolkit/logger.rb, line 88
def error_request(error, request, **args)
  filter_request_params = ZgcpToolkit::Formatter::Request.new.call(request)

  error({ message: error.message, backtrace: error.backtrace.first(backtrace_limit) }.merge!(filter_request_params).merge!(args))
end
flush!() click to toggle source
# File lib/zgcp_toolkit/logger.rb, line 94
def flush!
  loggers.each { |a| a.flush! }
end