// LogTagsFromContextToMap parses log tags from the context into a map of strings. func LogTagsFromContextToMap(ctx context.Context) (tags map[string]string) { if ctx == nil { return tags } logTags, ok := logger.LogTagsFromContext(ctx) if !ok || len(logTags) == 0 { return tags } tags = make(map[string]string) for key, tag := range logTags { if v := ctx.Value(key); v != nil { if value, ok := v.(fmt.Stringer); ok { tags[tag] = value.String() } else if value, ok := v.(string); ok { tags[tag] = value } } } return tags }
// LogTagsFromContext is a wrapper around logger.LogTagsFromContext // that simply casts the result to the type expected by // rpc.Connection. func LogTagsFromContext(ctx context.Context) (map[interface{}]string, bool) { tags, ok := logger.LogTagsFromContext(ctx) return map[interface{}]string(tags), ok }