Sha256: 3382cd5567d45854504d6f3025d6d9ba68f343d6a4494a2e78222be3fc25c5ae

Contents?: true

Size: 1.76 KB

Versions: 46

Compression:

Stored size: 1.76 KB

Contents

module Honeybadger
  module Breadcrumbs
    # @api private
    #
    module LogWrapper
      def add(severity, message = nil, progname = nil)
        org_severity, org_message, org_progname = severity, message, progname
        if defined?(Dry::Logger::Entry) && progname.is_a?(Dry::Logger::Entry) # Hanami uses dry-logger
          message, progname = progname.message || progname.exception, progname.progname
        else
          message, progname = [progname, nil] if message.nil?
        end
        message = message && message.to_s.strip
        unless should_ignore_log?(message, progname)
          Honeybadger.add_breadcrumb(message, category: :log, metadata: {
            severity: format_severity(severity),
            progname: progname
          })
        end

        super(org_severity, org_message, org_progname)
      end

      private

      def should_ignore_log?(message, progname)
        message.nil? ||
        message == "" ||
        Thread.current[:__hb_within_log_subscriber] ||
        progname == "honeybadger"
      end
    end

    # @api private
    #
    # This module is designed to be prepended into the
    # ActiveSupport::LogSubscriber for the sole purpose of silencing breadcrumb
    # log events. Since we already have specific breadcrumb events for each
    # class that provides LogSubscriber events, we want to filter out those
    # logs as they just become noise.
    module LogSubscriberInjector
      %w(info debug warn error fatal unknown).each do |level|
        define_method(level) do |*args, &block|
          begin
            Thread.current[:__hb_within_log_subscriber] = true
            super(*args, &block)
          ensure
            Thread.current[:__hb_within_log_subscriber] = false
          end
        end
      end
    end
  end
end

Version data entries

46 entries across 46 versions & 1 rubygems

Version Path
honeybadger-5.27.0 lib/honeybadger/breadcrumbs/logging.rb
honeybadger-5.26.4 lib/honeybadger/breadcrumbs/logging.rb
honeybadger-5.26.3 lib/honeybadger/breadcrumbs/logging.rb
honeybadger-5.26.2 lib/honeybadger/breadcrumbs/logging.rb
honeybadger-5.26.1 lib/honeybadger/breadcrumbs/logging.rb
honeybadger-5.26.0 lib/honeybadger/breadcrumbs/logging.rb
honeybadger-5.25.0 lib/honeybadger/breadcrumbs/logging.rb
honeybadger-5.24.0 lib/honeybadger/breadcrumbs/logging.rb
honeybadger-5.23.0 lib/honeybadger/breadcrumbs/logging.rb
honeybadger-5.22.0 lib/honeybadger/breadcrumbs/logging.rb
honeybadger-5.21.0 lib/honeybadger/breadcrumbs/logging.rb
honeybadger-5.20.1 lib/honeybadger/breadcrumbs/logging.rb
honeybadger-5.20.0 lib/honeybadger/breadcrumbs/logging.rb
honeybadger-5.19.2 lib/honeybadger/breadcrumbs/logging.rb
honeybadger-5.19.1 lib/honeybadger/breadcrumbs/logging.rb
honeybadger-5.19.0 lib/honeybadger/breadcrumbs/logging.rb
honeybadger-5.18.0 lib/honeybadger/breadcrumbs/logging.rb
honeybadger-5.17.0 lib/honeybadger/breadcrumbs/logging.rb
honeybadger-5.16.0 lib/honeybadger/breadcrumbs/logging.rb
honeybadger-5.15.6 lib/honeybadger/breadcrumbs/logging.rb