sentryhook

package module
v0.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 1, 2024 License: MIT Imports: 3 Imported by: 12

README

Sentry hook for Logrus logger

Sentry hook for Logrus logger.

Examples

Basic:

import (
  "github.com/sirupsen/logrus"
  "github.com/getsentry/sentry-go"

  "github.com/makasim/sentryhook"
)

func main() {
    if err := sentry.Init(sentry.ClientOptions{Dsn: "aDSN"}); err != nil {
        log.Fatal(err)
    }
    
    logger := logrus.New()
    logger.AddHook(sentryhook.New([]logrus.Level{logrus.PanicLevel, logrus.FatalLevel, logrus.ErrorLevel}))
    
    logger.Fatal("the error would be sent to sentry")
}

Customize Sentry event:

import (
  "github.com/sirupsen/logrus"
  "github.com/getsentry/sentry-go"

  "github.com/makasim/sentryhook"
)

func main() {
    if err := sentry.Init(sentry.ClientOptions{Dsn: "aDSN"}); err != nil {
        log.Fatal(err)
    }
    
    logger := logrus.New()
    logger.AddHook(sentryhook.New(
        []logrus.Level{logrus.PanicLevel, logrus.FatalLevel, logrus.ErrorLevel},
        sentryhook.WithConverter(newConverter()),
    ))
    
    logger.
        WithField("corr_id", "aCorrId").
        WithField("user_id", "aUserId").
        Fatal("the error would be sent to sentry")
}

func newConverter() sentryhook.Converter {
	return func(entry *logrus.Entry, hub *sentry.Hub) *sentry.Event {
		event := sentryhook.DefaultConverter(entry, hub)

		if pkg, ok := entry.Data["pkg"].(string); ok {
			event.Logger = pkg
		}

		if corrID, ok := entry.Data["corr_id"].(string); ok {
			event.Tags["corr_id"] = corrID
		}

		if userID, ok := entry.Data["user_id"]; ok {
			event.Tags["user_id"] = fmt.Sprintf("%v", userID)
		}

		return event
	}
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DefaultConverter added in v0.2.0

func DefaultConverter(entry *logrus.Entry, event *sentry.Event, hub *sentry.Hub)

Types

type Converter added in v0.2.0

type Converter func(entry *logrus.Entry, event *sentry.Event, hub *sentry.Hub)

type Hook

type Hook struct {
	// contains filtered or unexported fields
}

func New

func New(levels []logrus.Level, options ...Option) Hook

func (Hook) Fire

func (hook Hook) Fire(entry *logrus.Entry) error

func (Hook) Levels

func (hook Hook) Levels() []logrus.Level

type Option added in v0.2.0

type Option func(h *Hook)

func WithConverter added in v0.2.0

func WithConverter(c Converter) Option

func WithExtra added in v0.3.0

func WithExtra(extra map[string]interface{}) Option

func WithHub added in v0.2.0

func WithHub(hub *sentry.Hub) Option

func WithTags added in v0.3.0

func WithTags(tags map[string]string) Option

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL