Skip to content

Adding context to errors

Honeybadger can display additional custom key/value metadata — or “context” — with each error report. Context is what you’re looking for if:

  • You want to record the current user’s id or email address at the time of an exception
  • You need to send raw POST data for use in debugging
  • You have any other metadata you’d like to send with an exception

There are two ways to add context to errors in your code: global and local. While you can add any key/value data to context, a few keys have a special meaning in Honeybadger.

honeybadger.set_context allows you to send additional information to the Honeybadger API to assist in debugging. This method sets global context data and is additive - every time you call it, it adds to the existing set unless you call reset_context, documented below.

from honeybadger import honeybadger
honeybadger.set_context(my_data='my_value')

Context data is thread-local, meaning each thread maintains its own separate context.

honeybadger.reset_context clears the global context dictionary.

from honeybadger import honeybadger
honeybadger.reset_context()

What if you don’t want to set global context data? You can use Python context managers to set case-specific contextual information.

# from a Django view
from honeybadger import honeybadger
def my_view(request):
with honeybadger.context(user_email=request.POST.get('user_email', None)):
form = UserForm(request.POST)
# ...

While you can add any key/value data to context, a few keys have special meaning in Honeybadger:

OptionDescription
_tagsAny value passed in the _tags key will be processed as tags for the error.
user_idThe user ID used by Honeybadger to aggregate user data across occurrences on the error page.
user_emailSame as user_id, but for email addresses.

When using Django, the middleware automatically adds user information to error context:

  • user_id - from request.user.id
  • username - from request.user.get_username()

This happens automatically for authenticated users when an error occurs.

Honeybadger’s servers enforce the following limits to ensure the service operates smoothly for everyone:

  • Nested objects have a max depth of 20
  • Context values have a max size of 64Kb

When an error notification includes context data that exceed these limits, the context data will be truncated on the server, and the notification will still be processed.