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


3.4.3 (2018-08-30)


3.4.2 (2018-03-07)


  • 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)


  • 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)


  • 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)


  • Adds support for Django 2.0 Denis #130

  • Updates and improves Python examples #128

3.2.0 (2017-09-27)


  • Track difference between handled and unhandled exceptions #127

3.1.2 (2017-09-18)


  • 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)


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.


  • 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 rather than

    To enforce using urllib2/urllib3, use UrllibDelivery:

    from import UrllibDelivery

    To use a custom Delivery:

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

    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.

    def foo():
        raise Exception('an exception passed to Bugsnag then reraised')
    def bar():
        raise Exception('an exception which does not get captured')
    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__)

    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

    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)


  • 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)


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)


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


  • Redact HTTP_COOKIE and HTTP_AUTHORIZATION by default


  • Add add_metadata_tab method
  • Fix Flask integration overriding user information


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


  • 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!)


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


  • Now works on Python 3.2


  • 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


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


  • Make params_filter configuration work


  • Allow custom groupingHash


  • Send hostname to Bugsnag


  • Added celery integration


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


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


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


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


  • Fix cookies bug in Tornado apps


  • Added support for Tornado apps


  • Additional protection for bad string encodings


  • 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


  • Log trace when HTTP exception


  • Log the trace when theres an exception notifying