MCPcopy Create free account
hub / github.com/TheThingsNetwork/lorawan-stack / NewEvent

Function NewEvent

pkg/errors/sentry/sentry.go:26–62  ·  view source on GitHub ↗

NewEvent creates a new Sentry event for the given error.

(err error)

Source from the content-addressed store, hash-verified

24
25// NewEvent creates a new Sentry event for the given error.
26func NewEvent(err error) *sentry.Event {
27 evt := sentry.NewEvent()
28 if err == nil {
29 return evt
30 }
31
32 evt.Level = sentry.LevelError
33
34 errStack := errors.Stack(err)
35
36 messages := make([]string, 0, len(errStack))
37
38 for i, err := range errStack {
39 messages = append(messages, err.Error())
40 exception := sentry.Exception{Value: err.Error()}
41 if ttnErr, ok := errors.From(err); ok && ttnErr != nil {
42 exception.Module = ttnErr.Namespace()
43 exception.Type = ttnErr.Name()
44 if i == 0 { // We set the namespace, name and ID from the first error in the chain.
45 evt.Tags["error.namespace"] = ttnErr.Namespace()
46 evt.Tags["error.name"] = ttnErr.Name()
47 if correlationID := ttnErr.CorrelationID(); correlationID != "" {
48 evt.EventID = sentry.EventID(correlationID)
49 }
50 }
51 evt.Contexts[ttnErr.FullName()+" attributes"] = ttnErr.Attributes()
52 if stackTrace := sentry.ExtractStacktrace(err); stackTrace != nil {
53 exception.Stacktrace = stackTrace
54 }
55 }
56 evt.Exception = append(evt.Exception, exception)
57 }
58
59 evt.Message = strings.Join(messages, "\n--- ")
60
61 return evt
62}

Callers

nothing calls this directly

Calls 9

StackFunction · 0.92
FromFunction · 0.92
ErrorMethod · 0.65
NamespaceMethod · 0.65
NameMethod · 0.65
CorrelationIDMethod · 0.65
FullNameMethod · 0.65
AttributesMethod · 0.65
JoinMethod · 0.65

Tested by

no test coverage detected