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 (
"github.com/Sirupsen/logrus"
"github.com/Sirupsen/logrus/hooks/sentry"
)
func main() {
log := logrus.New()
hook, err := logrus_sentry.NewSentryHook(YOUR_DSN, []logrus.Level{
logrus.PanicLevel,
logrus.FatalLevel,
logrus.ErrorLevel,
})
if err == nil {
log.Hooks.Add(hook)
}
}
Some logrus fields have a special meaning in this hook, these are server_name and logger. When logs are sent to sentry these fields are treated differently.
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