Merge pull request #213 from awonak/sentry-tags
Sentry tags
diff --git a/hooks/sentry/README.md b/hooks/sentry/README.md
index 4e1c147..8b1f9a1 100644
--- a/hooks/sentry/README.md
+++ b/hooks/sentry/README.md
@@ -31,6 +31,22 @@
}
```
+If you wish to initialize a SentryHook with tags, you can use the `NewWithTagsSentryHook` constructor to provide default tags:
+
+```go
+tags := map[string]string{
+ "site": "example.com",
+}
+levels := []logrus.Level{
+ logrus.PanicLevel,
+ logrus.FatalLevel,
+ logrus.ErrorLevel,
+}
+hook, err := logrus_sentry.NewWithTagsSentryHook(YOUR_DSN, tags, levels)
+
+```
+
+
## Special fields
Some logrus fields have a special meaning in this hook,
diff --git a/hooks/sentry/sentry.go b/hooks/sentry/sentry.go
index e7e45b2..4d184b2 100644
--- a/hooks/sentry/sentry.go
+++ b/hooks/sentry/sentry.go
@@ -2,8 +2,8 @@
import (
"fmt"
- "time"
"net/http"
+ "time"
"github.com/Sirupsen/logrus"
"github.com/getsentry/raven-go"
@@ -68,7 +68,18 @@
// and initializes the raven client.
// This method sets the timeout to 100 milliseconds.
func NewSentryHook(DSN string, levels []logrus.Level) (*SentryHook, error) {
- client, err := raven.NewClient(DSN, nil)
+ client, err := raven.New(DSN)
+ if err != nil {
+ return nil, err
+ }
+ return &SentryHook{100 * time.Millisecond, client, levels}, nil
+}
+
+// NewWithTagsSentryHook creates a hook with tags to be added to an instance
+// of logger and initializes the raven client. This method sets the timeout to
+// 100 milliseconds.
+func NewWithTagsSentryHook(DSN string, tags map[string]string, levels []logrus.Level) (*SentryHook, error) {
+ client, err := raven.NewWithTags(DSN, tags)
if err != nil {
return nil, err
}
diff --git a/hooks/sentry/sentry_test.go b/hooks/sentry/sentry_test.go
index 5f3696b..5f59f69 100644
--- a/hooks/sentry/sentry_test.go
+++ b/hooks/sentry/sentry_test.go
@@ -6,6 +6,7 @@
"io/ioutil"
"net/http"
"net/http/httptest"
+ "reflect"
"strings"
"testing"
@@ -98,3 +99,34 @@
}
})
}
+
+func TestSentryTags(t *testing.T) {
+ WithTestDSN(t, func(dsn string, pch <-chan *raven.Packet) {
+ logger := getTestLogger()
+ tags := map[string]string{
+ "site": "test",
+ }
+ levels := []logrus.Level{
+ logrus.ErrorLevel,
+ }
+
+ hook, err := NewWithTagsSentryHook(dsn, tags, levels)
+ if err != nil {
+ t.Fatal(err.Error())
+ }
+
+ logger.Hooks.Add(hook)
+
+ logger.Error(message)
+ packet := <-pch
+ expected := raven.Tags{
+ raven.Tag{
+ Key: "site",
+ Value: "test",
+ },
+ }
+ if !reflect.DeepEqual(packet.Tags, expected) {
+ t.Errorf("message should have been %s, was %s", message, packet.Message)
+ }
+ })
+}