Skip to content

Error search

Honeybadger provides powerful search features that let you easily find previously-occurred errors by type, location, meta-data and many other attributes. You can search for errors in a single project, or across all projects.

To search by error type and message, you can simply enter those into the search box. More advanced searches are accomplished via a special query language. We’ve provided a query builder that lets you construct useful queries quickly and easily.

Enter a free-form text value, or one or more key:"value" tokens into the search box. Then press enter, or click on the magnifying glass button.

Tokens are separated by spaces. Single and double quotes are allowed.

Example query: john class:UserError -tag:wip -tag:pending component:"UsersController" action:'update'.

Because these search queries can become quite complex, we’ve included a query builder that allows you to construct them without much typing. The query builder automatically opens when you focus the search box.

Image of search box and search palette

Use the following keyboard shortcuts in the search box as you edit your query. Additional context-sensitive options will be shown to you as you type.

KeyResponse
enterSubmits form
tabTabs to next token and selects value inside quotes
shift-tabReverse-cycles selected token
mod backspaceDeletes selected token
escapeCloses hint

Quickly search errors using the following keyboard shortcuts while on the error page in the project. Note that these shortcuts immediately trigger a page load and will not preserve the state of the search builder.

KeyResponse
/Focus search box
A or aShow resolved And Unresolved Errors
U or uShow Unresolved Errors
R or rShow Resolved Errors
M or mShow Errors Assigned to Me
T or tShow All Users’ Errors
J or jJump to another project *
E or eShow errors in all environments **

*This shortcut can be used on any page of the project.

**Use first character of environment name to filter by environment.

When combining different tokens, we use AND. So class:MyError assignee:myemail@domain.com searches for MyError instances that are assigned to me.

When combining multiple values for the same token, we use OR. For example, class:"Foo" class:"Bar" will return errors with class Foo OR Bar. There’s one minor exception to this rule. Negative tokens, i.e. tokens preceded by - will be combined with AND.

Here are a few examples:

Example querySearches
class:"Foo" is:resolvedResolved errors with class Foo
-class:"Foo" is:resolvedResolved errors without class Foo
-class:"Foo" -is:resolvedUnresolved errors without class Foo
class:"Foo" class:"Bar" is:resolvedResolved errors with class Foo OR class Bar
-class:"Foo" -class:"Bar" is:resolvedResolved errors without class Foo AND class Bar

Search errors that are resolved, ignored, paused, or pending resolution, and the inverse of those states. By default, Honeybadger sorts all errors by -is:ignored and -is:resolved, showing you everything that has not been set as ignored or resolved. These tokens are automatically populated in the search box.

Example querySearches
is:resolvedResolved errors
-is:resolvedUnresolved errors
is:pausedPaused errors
-is:pausedErrors that aren’t paused
is:ignoredIgnored errors
-is:ignoredErrors that aren’t ignored
is:pending_resolutionErrors that are set to be resolved on the next deploy
-is:pending_resolutionErrors that aren’t set to be resolved on the next deploy

Image of resolved, ignored, and paused requests

Errors can be assigned to team members, and results can be refined by assignment. Tokens can be combined to search errors assigned to multiple team members.

Example querySearches
assignee:"nobody"Unassigned errors
assignee:"anybody"Errors assigned to anyone
assignee:"jane@email.com"Errors assigned to a specific person
-assignee:"jane@email.com"Errors not assigned to a specific person

If other, choose a team member from the drop-down list or begin typing to trigger auto-complete.

Animation of assigned to menu

Search errors by your environment:

Example querySearches
environment:"production"Errors occurring in production
-environment:"production"Errors not occurring in production
environment:"development"Errors occurring in development
-environment:"development"Errors not occurring in development
environment:"custom_environment"Errors occurring in any environment

If other, choose an environment from the drop-down list or begin typing to trigger auto-complete.

Animation of environment menu

Search errors by their occurrence. Your timezone is automatically determined but can be changed manually.

Example querySearches
occurred.after:"YYYY-MM-DD 0:00 UTC-7"Errors last seen after an exact date
occurred.before:"YYYY-MM-DD 0:00 UTC-7"Errors last seen before an exact date
occurred.after:"24 hours ago"Errors last seen after a human-friendly date
occurred.before:"24 hours ago"Errors last seen before a human-friendly date

You can enter human-friendly dates like today, this week, or July 1, for example: occurred.after:"this week".

If you want to see errors that last occurred as of a certain date — that is, they haven’t occurred again since that date — you can use last_occurred instead of occurred, like so: last_occurred.before:"1 week ago".

Animation of last occurred query

Search errors by when they were first seen. Your timezone is automatically determined but can be changed manually.

Example querySearches
created.after:"YYYY-MM-DD 0:00 UTC-7"Errors first seen after an exact date
created.before:"YYYY-MM-DD 0:00 UTC-7"Errors first seen before an exact date
created.after:"24 hours ago"Errors first seen after a human-friendly date
created.before:"24 hours ago"Errors first seen before a human-friendly date

You can enter human-friendly dates like today, this week, or July 1, for example: created.after:"September 12".

Search error by class, tag, and message.

Example querySearches
class:"PermissionDeniedError"Errors with a certain class
-class:"PermissionDeniedError"Errors without a certain class
tag:"tag_example"Errors with a tag
-tag:"tag_example"Errors Without a tag
message:"404"Errors with a message
-message:"404"Errors without message text
has:ticketErrors with an associated GitHub issue, Asana task, etc.
-has:ticketErrors without an associated GitHub issue, Asana task, etc.
has:commentErrors that have comments from team members
-has:commentErrors that have no comments from team members

Class, tag, and message can be combined for specific results. For example, the query: message:"NameError" class:"TextOrganizer" tag:"priority" searches errors containing “NameError” from the TextOrganizer class with a “priority” tag.

Search errors by component, action, URL, file name, and host.

Example querySearches
component:"UsersController"Errors occurring in a controller/component
-component:"UsersController"Errors not occurring in a controller/component
action:"update"Errors occurring in an action
-action:"update"Errors not occurring in an action
request.url:"https://google.com"Errors occurring at a URL
-request.url:"https://google.com"Errors not occurring at a URL
request.host:"api.yoursite.com"Errors occurring in an application with this in the HTTP_HOST environment variable (the Host: header provided by the browser)
-request.host:"api.yoursite.com"Errors not occurring in an application with this in the HTTP_HOST environment variable (the Host: header provided by the browser)
file:somefile.rbErrors occurring in this file
-file:somefile.rbErrors not occurring in this file
hostname:"api-east1-a"Errors occurring on a server with this hostname
-hostname:"api-east1-a"Errors not occurring on a server with this hostname

Locations can be combined for more specific results. For example, the query: component:"UsersController" action:"update" request.url:"/docs" searches errors generated from the update action in the UsersController in the URL camera.

Search errors by context, params, user agent, or session hashes.

Example querySearches
context.user_id:*Errors that impacted a user (if you send user_id in context)
context.user_email:*Errors that impacted a user (if you send user_email in context)
context.user.email:"bob@example.io"Errors with a matching context value
-context.user.name:"Bob"Errors without a matching context value
params.user.first_name:"Bob"Errors with a matching param value
params.old:"useless"Errors without a matching param value
request.user_agent:"GooglebotErrors caused by a user with this user agent
-request.user_agent:"GooglebotErrors not caused by a user with this user agent
request.referer:"http://my.site.com/locationErrors that occurred when the user came from a particular URL
-request.referer:"http://my.site.com/locationErrors that occurred when the user did not come from a particular URL

Requests can be combined or nested for more specific results. For example, searching for context.user.email:bob@example.com would match the following hash that was sent in the context with an error:

{ user: { email: "bob@example.com" } }

When searching these hashes, separate the nested levels of the hash with a period. For example params.user.first_name:bob.

Searches against context, params, user agent, or session hashes use * as a wild-card, so a search for context.user.email:*@example.com would match any email address at example.com.

When searching for data within array values, one way is to do the search on a key that contains the array value. For example, you might have a sidekiq job that shows up with params in our UI like this:

{"job" => {"args" => [{"job_class" => "Foo", "job_id" => "123"}]}}

To search for “Foo”, your search should look like this: params.job.args:*Foo*

You could be more explicit by including the array index in the query: params.job.args.0.job_id:123

Error results can be sorted by date or error count.

Sorting by “Last seen” lets you quickly jump to the newest or oldest exceptions that match your search result.

  1. Go to your project’s error list page
  2. Click on the table header labeled “last seen”
  3. Click on it again to reverse the sort order

Image of sort by date button

Sorting by “Times” lets you see which errors have happened the most or the fewest times.

  1. Go to your project’s error index
  2. Click on the table header labeled “times”
  3. Click on it again to reverse the sort order

Image of sort by count button

You can save a search using the button with the bookmark icon to the right of the button with the search icon. This allows to easily re-use a search. You can also pin a saved search to use that search as the default search. Once you have pinned a search, those search terms will be used as the default view for the project.

Image of saving and pinning a search

Batch actions

You can use the Bulk Update dropdown to update multiple errors simultaneously. You can apply actions to all search results (this is the default), or you can use the checkboxes in the error list to apply the actions to selected errors.

  1. Use the search to select which errors you’d like change.
  2. Click on “Actions” and select one or more options from the drop-down.

Search through your errors by class or error message by typing your search term into the search box. Free-form text queries can also be combined with key:value tokens, for example: john class:UserError component:UsersController action:update.