Class: Logging::Appenders::Honeybadger

Inherits:
Logging::Appender
  • Object
show all
Defined in:
lib/logging/appenders/honeybadger.rb

Constant Summary collapse

VERSION =
"0.0.1"
DEFAULT_NAME =
"honeybadger"
INTERNAL_BT_FILTER =

Prevent infinite recursion if this logger is assigned to the Honeybadger logger and it logs errors

%r{honeybadger-[^/]+/lib/honeybadger/}
HONEYBADGER_BT_FILTER =

Remove calls to this class in the stacktrace sent to Honeybadger. Only used when logging a String message.

%r{/logging-[^/]+/lib/logging/}
HONEYBADGER_SIMPLE_OPTIONS =
%i[
  api_key
  controller
  env
  error_class
  report_data
  root
  revision
  hostname
  backend
  debug
  send_data_at_exit
  max_queue_size
  config_path
  development_environments
  plugins
  skipped_plugins
].freeze
HONEYBADGER_NESTED_OPTIONS =
%i[
  breadcrumbs
  connection
  delayed_job
  exceptions
  logging
  rails
  request
  sidekiq
].freeze
HONEYBADGER_OPTIONS =
(HONEYBADGER_SIMPLE_OPTIONS + HONEYBADGER_NESTED_OPTIONS).freeze

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Honeybadger

Returns a new instance of Honeybadger.



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/logging/appenders/honeybadger.rb', line 60

def initialize(*args)
  args.compact!

  appender = { :level => :error }

  name = args.first.is_a?(String) ? args.shift : DEFAULT_NAME
  honeybadger = args.last.is_a?(Hash) ? args.pop.dup : {}

  ::Honeybadger.configure do |cfg|
    honeybadger.keys.each do |name|
      if HONEYBADGER_OPTIONS.include?(name)
        set_honeybadger_option(cfg, name, honeybadger[name])
      else
        appender[name] = honeybadger.delete(name)
      end
    end
  end

  super(name, appender)
end