module Sentry::StdLibLogger

def add(severity, message = nil, progname = nil, &block)

def add(severity, message = nil, progname = nil, &block)
  result = super
  return unless Sentry.initialized? && Sentry.get_current_hub
  # Only process logs that meet or exceed the logger's level
  return result if severity < level
  # exclude sentry SDK logs -- to prevent recursive log action,
  # do not process internal logs again
  if message.nil? && progname != Sentry::Logger::PROGNAME
    # handle different nature of Ruby Logger class:
    # inspo from Sentry::Breadcrumb::SentryLogger
    if block_given?
      message = yield
    else
      message = progname
    end
    message = message.to_s.strip
    if !message.nil? && message != Sentry::Logger::PROGNAME && method = SEVERITY_MAP[severity]
      if (filter = Sentry.configuration.std_lib_logger_filter) && !filter.call(self, message, method)
        return result
      end
      Sentry.logger.send(method, message, origin: ORIGIN)
    end
  end
  result
end