diff --git a/slog/converter.go b/slog/converter.go index 7f792c40..f9482f3d 100644 --- a/slog/converter.go +++ b/slog/converter.go @@ -52,26 +52,26 @@ func DefaultConverter(addSource bool, replaceAttr func(groups []string, a slog.A func attrToSentryEvent(attr slog.Attr, event *sentry.Event) { k := attr.Key v := attr.Value - kind := attr.Value.Kind() + kind := v.Kind() - if k == "dist" && kind == slog.KindString { + switch { + case k == "dist" && kind == slog.KindString: event.Dist = v.String() - } else if k == "environment" && kind == slog.KindString { + case k == "environment" && kind == slog.KindString: event.Environment = v.String() - } else if k == "event_id" && kind == slog.KindString { + case k == "event_id" && kind == slog.KindString: event.EventID = sentry.EventID(v.String()) - } else if k == "platform" && kind == slog.KindString { + case k == "platform" && kind == slog.KindString: event.Platform = v.String() - } else if k == "release" && kind == slog.KindString { + case k == "release" && kind == slog.KindString: event.Release = v.String() - } else if k == "server_name" && kind == slog.KindString { + case k == "server_name" && kind == slog.KindString: event.ServerName = v.String() - } else if attr.Key == "tags" && kind == slog.KindGroup { + case k == "tags" && kind == slog.KindGroup: event.Tags = attrsToString(v.Group()...) - } else if attr.Key == "transaction" && kind == slog.KindString { - // The implementation used slog.KindGroup instead of slog.KindString + case k == "transaction" && kind == slog.KindString: event.Transaction = v.String() - } else if attr.Key == "user" && kind == slog.KindGroup { + case k == "user" && kind == slog.KindGroup: data := attrsToString(v.Group()...) if id, ok := data["id"]; ok { event.User.ID = id @@ -97,12 +97,11 @@ func attrToSentryEvent(attr slog.Attr, event *sentry.Event) { event.User.Segment = segment delete(data, "segment") } - event.User.Data = data - } else if attr.Key == "request" && kind == slog.KindAny { - if req, ok := attr.Value.Any().(http.Request); ok { + case k == "request" && kind == slog.KindAny: + if req, ok := v.Any().(http.Request); ok { event.Request = sentry.NewRequest(&req) - } else if req, ok := attr.Value.Any().(*http.Request); ok { + } else if req, ok := v.Any().(*http.Request); ok { event.Request = sentry.NewRequest(req) } else { if tm, ok := v.Any().(encoding.TextMarshaler); ok { @@ -114,9 +113,10 @@ func attrToSentryEvent(attr slog.Attr, event *sentry.Event) { } } } - } else if kind == slog.KindGroup { - event.Extra[attr.Key] = attrsToMap(attr.Value.Group()...) - } else { - event.Extra[attr.Key] = attr.Value.Any() + case kind == slog.KindGroup: + event.Extra[k] = attrsToMap(v.Group()...) + default: + event.Extra[k] = v.Any() } + }