class InfluxReporter::ErrorMessage

Constants

DEFAULTS

Attributes

config[R]
culprit[RW]
database[RW]
exception[RW]
extra[RW]
filter[R]
http[RW]
level[RW]
logger[RW]
machine[RW]
message[RW]
param_message[RW]
stacktrace[RW]
timestamp[R]
user[RW]

Public Class Methods

from_exception(config, exception, opts = {}) click to toggle source
# File lib/influx_reporter/error_message.rb, line 50
def self.from_exception(config, exception, opts = {})
  message = "#{exception.class}: #{exception.message}"

  if config.excluded_exceptions.include? exception.class.to_s
    info "Skipping excluded exception #{exception.class}"
    return nil
  end

  error_message = new(config, message) do |msg|
    msg.level = :error
    msg.exception = Exception.from(exception)
    msg.stacktrace = Stacktrace.from(config, exception)
  end

  if frames = error_message.stacktrace&.frames
    if first_frame = frames.last
      error_message.culprit = "#{first_frame.filename}:#{first_frame.lineno}:in `#{first_frame.function}'"
    end
  end

  if env = opts[:rack_env]
    error_message.http = HTTP.from_rack_env env, filter: error_message.filter
    error_message.user = User.from_rack_env config, env
  end

  if extra = opts[:extra]
    error_message.extra = extra
  end

  error_message
end
new(config, message, attrs = {}) { |self| ... } click to toggle source
# File lib/influx_reporter/error_message.rb, line 20
def initialize(config, message, attrs = {})
  @config = config

  @message = message
  @timestamp = Util.nanos

  DEFAULTS.merge(attrs).each do |k, v|
    send(:"#{k}=", v)
  end
  @filter = Filter.new config

  yield self if block_given?
end

Public Instance Methods

add_extra(info) click to toggle source
# File lib/influx_reporter/error_message.rb, line 82
def add_extra(info)
  @extra ||= {}
  @extra.deep_merge! info
end