Permalink
Fetching contributors…
Cannot retrieve contributors at this time
449 lines (312 sloc) 11.8 KB

Changelog

3.4.3 (2018-08-30)

Fixes

3.4.2 (2018-03-07)

Fixes

  • Fix cases where parts of a payload could be erroneously trimmed as a recursive value #147

  • Apply payload filters to device and user metadata #146

3.4.1 (2018-02-22)

Fixes

  • Ensure correct usage of is_authenticated in Django applications #143

  • Allow exception option to override a logged exception in handler callbacks #141

3.4.0 (2018-01-09)

Enhancements

  • Add support for tracking sessions and overall crash rate by setting auto_capture_sessions in configuration options Alex Moinet #135

3.3.0 (2017-11-02)

Enhancements

  • Adds support for Django 2.0 Denis #130

  • Updates and improves Python examples #128

3.2.0 (2017-09-27)

Enhancements

  • Track difference between handled and unhandled exceptions #127

3.1.2 (2017-09-18)

Enhancements

  • Added flask example app #122

  • Added example for using celery with django #124

  • Added issue template #125

Bug fixes

  • Fixed context being overridden in flask notifier #123

3.1.1 (2017-06-08)

Bug fixes

  • Fix possible stack overflow when using a log handler and not specifying an API key #120

  • Fix traceback_excludes_modules when using compiled Python modules Kobi Meirson #119

3.1.0 (2017-02-24)

Enhancements

Bug fixes

  • Fix over-filtering of payload data when filters matched payload fields #116 #117

3.0.0 (2016-10-31)

This is a major release adding a number of new features and deprecating some lesser used parts of the library.

Enhancements

  • Add compatibility with Django 1.10 Jonny Pickett #108

  • Support customizing delivery and sending error reports using requests.

    The new Delivery class is a generic way of sending a serialized payload to Bugsnag. The Configuration class now has a delivery property which should be an instance of Delivery. By default, if requests is installed, reports are sent via bugsnag.delivery.RequestsDelivery rather than bugsnag.delivery.UrllibDelivery.

    To enforce using urllib2/urllib3, use UrllibDelivery:

    from bugsnag.delivery import UrllibDelivery
    
    bugsnag.configure(delivery=UrllibDelivery())

    To use a custom Delivery:

    from bugsnag.delivery import Delivery
    
    class SomeSpecialDelivery(Delivery):
    
        def deliver(self, config, payload):
            send_to_my_queue(config.get_endpoint(), config.proxy_host, payload)
    
    bugsnag.configure(delivery=SomeSpecialDelivery())

    Graham Campbell Delisa Mason #86

  • Support multiple clients in a single environment using bugsnag.Client. A new client can be initialized using a Configuration or options passed to Client(). By default, a client is installed as the system exception hook. To disable this behavior, set install_sys_hook to False.

    client = Client(api_key='...')
    config = Configuration(api_key='...')
    client = Client(config)

    Kyle Fuller #101

  • Support running a block of code within a client's context. Any exception raised will be reported.

    with client.capture():
        raise Exception('an exception reported to Bugsnag then reraised')

    Specific types of exceptions can be captured by adding exceptions as a tuple.

    with client.capture((TypeError,)):
        raise Exception('an exception which does not get captured')

    Additional options can be passed to th resulting error report, such as attached metadata or severity.

    with client.capture(account_id='123', severity='info'):
        raise Exception('failed to validate record')

    Functions can be decorated to capture any exceptions thrown during execution.

    @client.capture
    def foo():
        raise Exception('an exception passed to Bugsnag then reraised')
    
    @client.capture((TypeError,))
    def bar():
        raise Exception('an exception which does not get captured')
    
    @client.capture(test_slice='B')
    def baz():
        raise Exception('an exception passed to Bugsnag then reraised')

    Kyle Fuller Delisa Mason #101

  • Support creating a log handler from a client, and forwarding logged messages to Bugsnag.

    client = Client(api_key='...')
    logger = logging.getLogger(__name__)
    
    logger.addHandler(client.log_handler())

    Log messages can also be customized using additional information from the log record and callbacks:

    client = Client(api_key='...')
    logger = logging.getLogger(__name__)
    handler = client.log_handler()
    
    def add_extra_info(record, options):
        if 'meta_data' not in options:
            options['meta_data'] = {}
    
        options['meta_data']['stats'] = {
          'account_id': record.account_id,
          'ab_test_slice': record.slice_name
        }
    
    handler.add_callback(add_extra_info)
    logger.addHandler(handler)

    BugsnagHandler argument api_key was deprecated as a part of this change.

    Delisa Mason #103

  • Replace existing logging with a logger. Logs from bugsnag can now be controlled by setting the log level of logging.getLogger('bugsnag'). Kyle Fuller #95

  • Wrap non-Exception objects passed to notify() in a RuntimeError Delisa Mason #98

Bug fixes

  • Fix proxy configuration setting a global opener Kyle Fuller #97

  • Fix dropped reports during fatal errors occuring before threads join Delisa Mason #99

  • Fix missing error reports when invoking a function decorated with a Bugsnag client using the wrong arguments Delisa Mason #110

2.5.2 (2016-08-19)

Enhancements

  • Log exception message when notifications fail to send

Bug Fixes

  • Improve recursion handling in metadata parsing

2.5.1 (2016-08-12)

Bug Fixes

  • Fix setting api_key and grouping_hash from notify() or before_notify()
  • Fix merge behavior when overriding metadata from notify()

2.5.0 (2016-06-14)

Enhancements

Bug Fixes

  • Fix an issue where the package version is marked as "unknown" Kyle Fuller #83

  • Fix an issue where request metadata is not sent when not using SessionMiddleware in Django

2.4.0 (2016-01-18)

Enhancements

Bug Fixes

  • Remove use of deprecated request.REQUEST attribute in favor of GET/POST Delisa Mason #69

  • Fix user attribute logging for Django custom authentication setups Delisa Mason #76 #78

2.3.1

  • Redact HTTP_COOKIE and HTTP_AUTHORIZATION by default

2.3.0

  • Add add_metadata_tab method
  • Fix Flask integration overriding user information

2.2.0

  • Optionally send a snippet of code along with each frame in the stacktrace
  • Default to https:// for reports.

2.1.0

  • Allow custom meta-data when using the Bugsnag log handler (thanks @lwcolton!)
  • Update flask support for python 3.4 (thanks @stas!)
  • Show json post body for flask requests (thanks @stas!)

2.0.2

  • Better logging support
  • More robustness for notifies during shutdown
  • Call close() on WSGI apps that are only iterable, not iterators

2.0.1

  • Now works on Python 3.2

2.0.0

  • Read request-local settings in bugsnag.notify
  • Add support for before_notify callbacks
  • Avoid truncating values when unnecessary
  • Send user data to bugsnag for django

1.5.0

  • Send 'severity' of error to Bugsnag
  • Add 'payloadVersion'

1.4.0

  • Make params_filter configuration work

1.3.2

  • Allow custom groupingHash

1.3.1

  • Send hostname to Bugsnag

1.3.0

  • Added celery integration

1.2.7

  • Configure the log handler in the constructor for when called from cron job.

1.2.6

  • Read the API key from the environment for Heroku users
  • Best guess a project_root for a sensible default

1.2.5

  • Add blinker as a dependency, makes using Bugsnag with Flask easier

1.2.4

  • Removed automatic userId population from username in django, to avoid a database lookup

1.2.3

  • Fix cookies bug in Tornado apps

1.2.2

  • Added support for Tornado apps

1.2.1

  • Additional protection for bad string encodings

1.2.0

  • Fixed issue when non-unicode data was passed in metadata
  • Filters are now applied for substring matches ("password" will now also match "confirm_password")
  • Ignore django.http.Http404 exceptions by default when using django middleware

1.1.2

  • Log trace when HTTP exception

1.1.1

  • Log the trace when theres an exception notifying