lib/raven/breadcrumbs/logger.rb in sentry-raven-3.0.4 vs lib/raven/breadcrumbs/logger.rb in sentry-raven-3.1.0

- old
+ new

@@ -1,93 +1,3 @@ -require 'logger' +DeprecationHelper.deprecate_old_breadcrumbs_configuration(:sentry_logger) -module Raven - module BreadcrumbLogger - LEVELS = { - ::Logger::DEBUG => 'debug', - ::Logger::INFO => 'info', - ::Logger::WARN => 'warn', - ::Logger::ERROR => 'error', - ::Logger::FATAL => 'fatal' - }.freeze - - EXC_FORMAT = /^([a-zA-Z0-9]+)\:\s(.*)$/.freeze - - def self.parse_exception(message) - lines = message.split(/\n\s*/) - # TODO: wat - return nil unless lines.length > 2 - - match = lines[0].match(EXC_FORMAT) - return nil unless match - - _, type, value = match.to_a - [type, value] - end - - def add(*args) - add_breadcrumb(*args) - super - end - - def add_breadcrumb(severity, message = nil, progname = nil) - message = progname if message.nil? # see Ruby's Logger docs for why - return if ignored_logger?(progname) - return if message.nil? || message == "" - - # some loggers will add leading/trailing space as they (incorrectly, mind you) - # think of logging as a shortcut to std{out,err} - message = message.to_s.strip - - last_crumb = Raven.breadcrumbs.peek - # try to avoid dupes from logger broadcasts - if last_crumb.nil? || last_crumb.message != message - error = Raven::BreadcrumbLogger.parse_exception(message) - # TODO(dcramer): we need to filter out the "currently captured error" - if error - Raven.breadcrumbs.record do |crumb| - crumb.level = Raven::BreadcrumbLogger::LEVELS.fetch(severity, nil) - crumb.category = progname || 'error' - crumb.type = 'error' - crumb.data = { - :type => error[0], - :value => error[1] - } - end - else - Raven.breadcrumbs.record do |crumb| - crumb.level = Raven::BreadcrumbLogger::LEVELS.fetch(severity, nil) - crumb.category = progname || 'logger' - crumb.message = message - end - end - end - end - - private - - def ignored_logger?(progname) - progname == "sentry" || - Raven.configuration.exclude_loggers.include?(progname) - end - end - module OldBreadcrumbLogger - def self.included(base) - base.class_eval do - include Raven::BreadcrumbLogger - alias_method :add_without_raven, :add - alias_method :add, :add_with_raven - end - end - - def add_with_raven(*args) - add_breadcrumb(*args) - add_without_raven(*args) - end - end -end - -Raven.safely_prepend( - "BreadcrumbLogger", - :from => Raven, - :to => ::Logger -) +require "raven/breadcrumbs/sentry_logger"