github.com/grafana/pyroscope@v1.18.0/pkg/util/spanlogger/spanlogger.go (about) 1 // SPDX-License-Identifier: AGPL-3.0-only 2 3 package spanlogger 4 5 import ( 6 "context" 7 8 "github.com/go-kit/log" 9 "github.com/grafana/dskit/spanlogger" 10 "github.com/grafana/dskit/tenant" 11 ) 12 13 const ( 14 // TenantIDsTagName is the tenant IDs tag name. 15 TenantIDsTagName = spanlogger.TenantIDsTagName 16 ) 17 18 // defaultTenantResolver is used to include tenant IDs in spans automatically from the context. 19 var defaultTenantResolver = tenant.NewMultiResolver() 20 21 // SpanLogger unifies tracing and logging, to reduce repetition. 22 type SpanLogger = spanlogger.SpanLogger 23 24 // NewWithLogger is like New but allows to pass a logger. 25 func NewWithLogger(ctx context.Context, logger log.Logger, method string, kvps ...interface{}) (*SpanLogger, context.Context) { 26 return spanlogger.New(ctx, logger, method, defaultTenantResolver, kvps...) 27 } 28 29 // FromContext returns a SpanLogger using the current parent span. 30 // If there is no parent span, the SpanLogger will only log to the logger 31 // within the context. If the context doesn't have a logger, the fallback 32 // logger is used. 33 func FromContext(ctx context.Context, fallback log.Logger) *SpanLogger { 34 return spanlogger.FromContext(ctx, fallback, defaultTenantResolver) 35 }