class ReeLogger::RollbarAppender

def append(event, progname = nil)

def append(event, progname = nil)
  rollbar_level =
    case event.level
    when :fatal
      'critical'
    when :unknown
      'critical'
    else
      event.level.to_s
    end
  fingerprint = event.message.to_s
  if event.exception
    fingerprint += event.exception.class.to_s
  end
  scope = {}
  parameters = event.parameters.dup
  if parameters.key?(:rollbar_scope) && parameters[:rollbar_scope].is_a?(Hash)
    scope = scope.merge(
      parameters.delete(:rollbar_scope)
    )
  end
  if !scope[:fingerprint]
    fingerprint = event.message.to_s
    if event.exception
      fingerprint += event.exception.class.to_s
    end
    scope[:fingerprint] = Digest::MD5.new.update(fingerprint).to_s
  end
  Rollbar.scoped(scope) do
    Rollbar.log(rollbar_level, event.message, event.exception, parameters)
  end
  nil
end

def initialize(level, access_token:, environment:, **opts)

def initialize(level, access_token:, environment:, **opts)
  super(level, nil)
  require 'rollbar'
  Rollbar.configure do |config|
    config.enabled = true
    config.access_token = access_token
    config.environment = environment
    config.branch = opts[:branch] if opts[:branch]
    config.host = opts[:host] if opts[:host]
  end
end