tree: aa26f8a89152c4f812d19a3be3981f08b9bbe3cd [path history] [tgz]
  2. sentry.go
  3. sentry_test.go

Sentry Hook for Logrus

Sentry provides both self-hosted and hosted solutions for exception tracking. Both client and server are open source.


Every sentry application defined on the server gets a different DSN. In the example below replace YOUR_DSN with the one created for your application.

import (

func main() {
  log       := logrus.New()
  hook, err := logrus_sentry.NewSentryHook(YOUR_DSN, []logrus.Level{

  if err == nil {

Special fields

Some logrus fields have a special meaning in this hook, these are server_name, logger and http_request. When logs are sent to sentry these fields are treated differently.

  • server_name (also known as hostname) is the name of the server which is logging the event (
  • logger is the part of the application which is logging the event. In go this usually means setting it to the name of the package.
  • http_request is the in-coming request(*http.Request). The detailed request data are sent to Sentry.


Timeout is the time the sentry hook will wait for a response from the sentry server.

If this time elapses with no response from the server an error will be returned.

If Timeout is set to 0 the SentryHook will not wait for a reply and will assume a correct delivery.

The SentryHook has a default timeout of 100 milliseconds when created with a call to NewSentryHook. This can be changed by assigning a value to the Timeout field:

hook, _ := logrus_sentry.NewSentryHook(...)
hook.Timeout = 20*time.Second