forked from mirror/logrus
Allow sentry hook to be created using an initialized raven client
This commit is contained in:
parent
07d998d174
commit
1b73323cd0
|
@ -46,6 +46,39 @@ hook, err := logrus_sentry.NewWithTagsSentryHook(YOUR_DSN, tags, levels)
|
|||
|
||||
```
|
||||
|
||||
If you wish to initialize a SentryHook with an already initialized raven client, you can use
|
||||
the `NewWithClientSentryHook` constructor:
|
||||
|
||||
```go
|
||||
import (
|
||||
"github.com/Sirupsen/logrus"
|
||||
"github.com/Sirupsen/logrus/hooks/sentry"
|
||||
"github.com/getsentry/raven-go"
|
||||
)
|
||||
|
||||
func main() {
|
||||
log := logrus.New()
|
||||
|
||||
client, err := raven.New(YOUR_DSN)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
hook, err := logrus_sentry.NewWithClientSentryHook(client, []logrus.Level{
|
||||
logrus.PanicLevel,
|
||||
logrus.FatalLevel,
|
||||
logrus.ErrorLevel,
|
||||
})
|
||||
|
||||
if err == nil {
|
||||
log.Hooks.Add(hook)
|
||||
}
|
||||
}
|
||||
|
||||
hook, err := NewWithClientSentryHook(client, []logrus.Level{
|
||||
logrus.ErrorLevel,
|
||||
})
|
||||
```
|
||||
|
||||
## Special fields
|
||||
|
||||
|
|
|
@ -86,6 +86,12 @@ func NewWithTagsSentryHook(DSN string, tags map[string]string, levels []logrus.L
|
|||
return &SentryHook{100 * time.Millisecond, client, levels}, nil
|
||||
}
|
||||
|
||||
// NewWithClientSentryHook creates a hook using an initialized raven client.
|
||||
// This method sets the timeout to 100 milliseconds.
|
||||
func NewWithClientSentryHook(client *raven.Client, levels []logrus.Level) (*SentryHook, error) {
|
||||
return &SentryHook{100 * time.Millisecond, client, levels}, nil
|
||||
}
|
||||
|
||||
// Called when an event should be sent to sentry
|
||||
// Special fields that sentry uses to give more information to the server
|
||||
// are extracted from entry.Data (if they are found)
|
||||
|
|
|
@ -100,6 +100,28 @@ func TestSentryHandler(t *testing.T) {
|
|||
})
|
||||
}
|
||||
|
||||
func TestSentryWithClient(t *testing.T) {
|
||||
WithTestDSN(t, func(dsn string, pch <-chan *raven.Packet) {
|
||||
logger := getTestLogger()
|
||||
|
||||
client, _ := raven.New(dsn)
|
||||
|
||||
hook, err := NewWithClientSentryHook(client, []logrus.Level{
|
||||
logrus.ErrorLevel,
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatal(err.Error())
|
||||
}
|
||||
logger.Hooks.Add(hook)
|
||||
|
||||
logger.Error(message)
|
||||
packet := <-pch
|
||||
if packet.Message != message {
|
||||
t.Errorf("message should have been %s, was %s", message, packet.Message)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func TestSentryTags(t *testing.T) {
|
||||
WithTestDSN(t, func(dsn string, pch <-chan *raven.Packet) {
|
||||
logger := getTestLogger()
|
||||
|
|
Loading…
Reference in New Issue