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

Keyboard navigation

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.

Key Response
enter Submits form
tab Tabs to next token and selects value inside quotes
shift-tab Reverse-cycles selected token
mod backspace Deletes selected token
escape Closes hint

Keyboard shortcuts

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.

Key Response
/ Focus search box
A or a Show resolved And Unresolved Errors
U or u Show Unresolved Errors
R or r Show Resolved Errors
M or m Show Errors Assigned to Me
T or t Show All Users' Errors
J or j Jump to another project *
E or e Show 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.

How tokens are combined

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 query Searches
class:"Foo" is:resolved Resolved errors with class Foo
-class:"Foo" is:resolved Resolved errors without class Foo
-class:"Foo" -is:resolved Unresolved errors without class Foo
class:"Foo" class:"Bar" is:resolved Resolved errors with class Foo OR class Bar
-class:"Foo" -class:"Bar" is:resolved Resolved errors without class Foo AND class Bar

Examples

Search by state

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 query Searches
is:resolved Resolved errors
-is:resolved Unresolved errors
is:paused Paused errors
-is:paused Errors that aren't paused
is:ignored Ignored errors
-is:ignored Errors that aren't ignored
is:pending_resolution Errors that are set to be resolved on the next deploy
-is:pending_resolution Errors that aren't set to be resolved on the next deploy

Image of resolved, ignored, and paused requests

Search by assignee

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 query Searches
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 by environment

Search errors by your environment:

Example query Searches
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 assigned to menu.

Search by date

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

Example query Searches
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 by first seen

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

Example query Searches
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 by error details

Search error by class, tag, and message.

Example query Searches
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:ticket Errors with an associated GitHub issue, Asana task, etc.
-has:ticket Errors without an associated GitHub issue, Asana task, etc.
has:comment Errors that have comments from team members
-has:comment Errors 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 by location

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

Example query Searches
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.rb Errors occurring in this file
-file:somefile.rb Errors 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 by request

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

Example query Searches
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:"Googlebot Errors caused by a user with this user agent
-request.user_agent:"Googlebot Errors not caused by a user with this user agent
request.referer:"http://my.site.com/location Errors that occurred when the user came from a particular URL
-request.referer:"http://my.site.com/location Errors 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.

Searching for arrays

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:

ruby
{"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

Sorting results

Error results can be sorted by date or error count.

Sort by date

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

Sort by count

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.

Image of actions 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.