- Fixed a threading bug (#144, thanks @rossgray for the report)
- Fixed a bug when handling
DisallowedHost
exceptions in Django 1.9+ (#143, thanks @blueyed for the report and patch)
- Fixed two bugs related to SQL parsing that could cause an IndexError.
- Switched to urllib3 as default transport. This means that opbeat_python now requires both urllib3 and certifi
- Added support for PyMongo/MongoDB instrumentation
- Added support for Twisted LogObservers, thanks @slav0nic
- fixed several bugs in dbapi2 instrumentation
- Added support for Django 1.10
- Dropped official support for Python 2.6
- Introduce transactions ignore patterns.
- fixed an issue where Opbeat for Flask would listen for all signals, instead of just signals from the app it has been initialized with. Thanks @tomlinton for the fix.
- fixed an encoding issue when loading the README.rst in setup.py. Thanks @apuyou for the fix.
- removed suprious print statement that made it into 3.3.1. Thanks @coagulant for the heads up!
- updated README
- setting
PROCESSORS
to an empty list now skips processing completely instead of using the default processors - setting
_opbeat_transaction_name
on therequest
object from a view or middleware allows code to override the name used for the transaction - experimental support for manylinux1 binary wheels. Note that the wheels will not be uploaded to PyPI for now, but will be available on the release page on GitHub.
- added an asyncio transport (for Python 3.5 and up), thanks @ticosax!
- fixed a bug with uWSGI master mode which would stop the module from sending errors to Opbeat if it was used before uWSGI forked the worker processes. Thanks @dsanders11 for finding the bug and initial patch!
- fixed bug in MySQL instrumentation: opbeat/opbeat_python#94
- fixed bug in requests instrumentation: opbeat/opbeat_python#95
- added a FILTER_EXCEPTION_TYPES attribute in the OPBEAT dict in Django / Flask settings that allows the user to filter out specific exception types
- prefixed Django and Flask transaction names with HTTP methods names
- Note: This means views in the "Views" list on the Opbeat performance tab will change their name and you will have both non-prefixed names and http method prefixed names in the list until the old names fall out of the selected timeframe
- added possibility to override the transport class used by the client
- fixed a regression in our frame walker for Django templates in Django 1.9+
- fixed an issue where SSL connections would not get closed on the client
- added support for OPBEAT_WRAPT_EXTENSIONS to override building of the wrapt C extension module during installation.
- preliminary support for Django 1.9
- support for Python 3.5
- added OPBEAT_DISABLE_SEND environment variable to completely stop sending data to Opbeat
- improved test suite
- Fixed bug in Redis instrumentation introduced in 3.1 refactor.
- Flask APM support. Install as opbeat[flask] to ensure flask deps are installed.
- Introduce @opbeat.trace decorator for better insights into custom code
- Internal refactoring to support the decorator.
- Stop instrumenting pipelined Redis operations.
- Only log one line per module we failed to instrument
- Fix a problem that occurs when
end_transaction
gets called twice in a row - Silently ignore
DatabaseError
when collecting user info for Django. - Better error logging with
async=True
- Renamed
async
keyword in anticipation of Python 3.5+ - Instruments Django middleware by default to give better insights in APM
- Better sanitation of http body
- A bit of cleanups and refactoring
- Fix a bug in trace reporting that occurred if the traced code would raise
- Introduce a management command to test out local Opbeat configuration and send a test exception.
- Include templates in stackframes in traces.
- Various bug fixes related to stackframes in traces.
- instrument python-memcached
- Make sure only one of urllib3 and requests will show up on traces
- introduced instrumentation to enable in-depth performance monitoring
- began deprecation of camelCase style
capture
methods on `Client. Full deprecation in 4.0.
- refactored AyncWorker, should now be better behaved when shutting down
- fixed bug with django-configurations
- fixed issue with template debug in Django 1.9 (unreleased)
- added experimental support for instrumenting Django middleware for better metrics data
- fixed bug with Django and
DEBUG = True
- fixed bug in collecting Django POST data
- start using the new intake URL
- Flask: module now adheres to the Flask.debug option and does not log to Opbeat unless it is False
- Fixed a bug when
__name__
does not exist forview_func
given toTracingMiddleware
- Async support was refactored, removed old
AsyncClient
classes TracingMiddleware
was added to time requestsAPP_ID
now configurable from environment- Lots of cleanups
- added preliminary support for Django 1.8
- dropped support for Django 1.3
- When using Django, only try to submit user data if
django.contrib.auth
is installed. Thanks @nickbruun for the report and fix!
- fixed configuration of Flask integration to follow our documentation. The old behaviour still works, but has been deprecated. Please refer to https://opbeat.com/docs/articles/error-logging-in-flask/ for the configuration variable names.
- fixed catching local variables in celery tasks
- added AppConfig for Django 1.7, thanks @stefanfoulis
- fixed JSON encoding for the
bytes
type in Python 3, thanks Trey Long for the report
- added support for Django 1.7
- dropped support for Django 1.2
- switched from nosetests to py.test
- support for Python 3
- Renamed from opbeat_python to opbeat.
- Simplified configuration
- Conform to the updated Opbeat API.
- Changes to conform to the Opbeat API.
- Forked from Raven 1.9.0
- Signatures are no longer sent with messages. This requires the server version to be at least 4.4.6.
- Several fixes and additions were added to the Django report view.
long
types are now handled intransform()
.- Improved integration with Celery (and django-celery) for capturing errors.
- There is now a builtin view as part of the Django integration for sending events server-side
(from the client) to Sentry. The view is currently undocumented, but is available as
{% url raven-report %}
and will use your server side credentials. To use this view you'd simply swap out the servers configuration in raven-js and point it to the given URL. - A new middleware for ZeroRPC now exists.
- A new protocol for registering transports now exists.
- Corrected some behavior in the UDP transport.
- Celery signals are now connected by default within the Django integration.
- The password sanitizer will now attempt to sanitize key=value pairs within strings (such as the querystring).
- Two new santiziers were added: RemoveStackLocalsProcessor and RemovePostDataProcessor
- Stacks must now be passed as a list of tuples (frame, lineno) rather than a list of frames. This includes calls to logging (extra={'stack': []}), as well as explicit client calls (capture(stack=[])).
This corrects some issues (mostly in tracebacks) with the wrong lineno being reported for a frame.
- raven now tracks the state of the Sentry server. If it receives an error, it will slow down requests to the server (by passing them into a named logger, sentry.errors), and increasingly delay the next try with repeated failures, up to about a minute.
- gunicorn is now disabled in default logging configuration
- Moved exception and message methods to capture{Exception,Message}.
- Added
captureQuery
method.
- Corrected duplicate DSN behavior in Django client.
- Django can now be configured by setting SENTRY_DSN.
- Improve logging for send_remote failures (and correct issue created when send_encoded was introduced).
- Renamed SantizePassworsProcessor to SanitizePassworsProcessor.
- Support sending the culprit with logging messages as part of extra.
- Added client.exception and client.message shortcuts.
- Refactored client send API to be more easily extensible.
- MOAR TESTS!
- Gracefully handle exceptions in Django client when using integrated setup.
- Added Client.error_logger as a new logger instance that points to
sentry.errors
.
- Corrected behavior with raven logging errors to send_remote
which could potentially cause a very large backlog to Sentry
when it should just log to
sentry.errors
. - Ensure the
site
argument is sent to the server.
- Made DSN a first-class citizen throughout raven.
- Added a Pylons-specific WSGI middleware.
- Improved the generic WSGI middleware to capture HTTP information.
- Improved logging and logbook handlers.
- Corrected logging stack behavior so that it doesnt capture raven+logging extensions are part of the frames.
- Remove logging attr magic.
- Correct encoding behavior on bool and float types.
- Fix 'request' attribute on Django logging.
- Corrected logging behavior with extra data to match pre 1.x behavior.
- Handle frames that are missing f_globals and f_locals.
- Stricter conversion of int and boolean values.
- Handle invalid sources for templates in Django.
- varmap was refactored to send keys back to callbacks.
- SanitizePasswordProcessor now handles http data.
- Renaming raven2 to raven as it causes too many issues.
- Corrected a bug in setup_logging.
- raven now sends "sentry_version" header which is the expected server version.
- Handle more edge cases on stack iteration.
- Gracefully handle invalid f_locals.
- All datetimes are assumed to be utcnow() as of Sentry 2.0.0-RC5
- Now only works with Sentry>=2.0.0 server.
- raven is now listed as raven2 on PyPi.
- raven.contrib.celery is now useable.
- raven.contrib.django.celery is now useable.
- Fixed a bug with request.raw_post_data buffering in Django.
- Servers would stop iterating after the first successful post which was not the intended behavior.
- You can now explicitly pass a list of frame objects to the process method.
- The default logging handler (SentryHandler) will now accept a set of kwargs to instantiate a new client with (GH-10).
- Fixed a bug with checksum generation when module or function were missing (GH-9).
- Added a Django-specific WSGI middleware.
- Two minor fixes for the Django client:
- Ensure the sentry key exists in data in (GH-8).
- properly set
kwargs['data']
to an empty list when its a NoneType (GH-6).
- Require
servers
on base Client. - Added support for the
site
option in Client. - Moved
raven.contrib.django.logging
toraven.contrib.django.handlers
.
- Fixed an infinite loop in
iter_tb
.
- Removed the
thrashed
key inrequest.sentry
for the Django integration. - Changed the logging handler to correctly inherit old-style classes (GH-1).
- Added a
client
argument toraven.contrib.django.models.get_client()
.
- auto_log_stacks now works with create_from_text
- added Client.get_ident
- Initial version of raven (extracted from django-sentry 1.12.1).