You've already forked opentelemetry-go
mirror of
https://github.com/open-telemetry/opentelemetry-go.git
synced 2026-06-03 18:35:08 +02:00
768e930779
a part of #7020 ```txt goos: windows goarch: amd64 pkg: go.opentelemetry.io/otel/exporters/stdout/stdoutlog/internal/observ cpu: Intel(R) Core(TM) i7-14700 │ result.txt │ │ sec/op │ InstrumentationExportLogs/NoError-28 47.68n ± 5% InstrumentationExportLogs/PartialError-28 471.6n ± 2% InstrumentationExportLogs/FullError-28 471.9n ± 10% geomean 219.7n │ result.txt │ │ B/op │ InstrumentationExportLogs/NoError-28 0.000 ± 0% InstrumentationExportLogs/PartialError-28 305.0 ± 0% InstrumentationExportLogs/FullError-28 305.0 ± 0% geomean ¹ ¹ summaries must be >0 to compute geomean │ result.txt │ │ allocs/op │ InstrumentationExportLogs/NoError-28 0.000 ± 0% InstrumentationExportLogs/PartialError-28 4.000 ± 0% InstrumentationExportLogs/FullError-28 4.000 ± 0% geomean ¹ ¹ summaries must be >0 to compute geomean ``` --------- Co-authored-by: Damien Mathieu <42@dmathieu.com>
59 lines
1.8 KiB
Go
59 lines
1.8 KiB
Go
// Code generated by gotmpl. DO NOT MODIFY.
|
|
// source: internal/shared/x/x.go.tmpl
|
|
|
|
// Copyright The OpenTelemetry Authors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
// Package x documents experimental features for [go.opentelemetry.io/otel/exporters/stdout/stdoutlog].
|
|
package x // import "go.opentelemetry.io/otel/exporters/stdout/stdoutlog/internal/x"
|
|
|
|
import (
|
|
"os"
|
|
)
|
|
|
|
// Feature is an experimental feature control flag. It provides a uniform way
|
|
// to interact with these feature flags and parse their values.
|
|
type Feature[T any] struct {
|
|
keys []string
|
|
parse func(v string) (T, bool)
|
|
}
|
|
|
|
func newFeature[T any](suffix []string, parse func(string) (T, bool)) Feature[T] {
|
|
const envKeyRoot = "OTEL_GO_X_"
|
|
keys := make([]string, 0, len(suffix))
|
|
for _, s := range suffix {
|
|
keys = append(keys, envKeyRoot+s)
|
|
}
|
|
return Feature[T]{
|
|
keys: keys,
|
|
parse: parse,
|
|
}
|
|
}
|
|
|
|
// Keys returns the environment variable keys that can be set to enable the
|
|
// feature.
|
|
func (f Feature[T]) Keys() []string { return f.keys }
|
|
|
|
// Lookup returns the user configured value for the feature and true if the
|
|
// user has enabled the feature. Otherwise, if the feature is not enabled, a
|
|
// zero-value and false are returned.
|
|
func (f Feature[T]) Lookup() (v T, ok bool) {
|
|
// https://github.com/open-telemetry/opentelemetry-specification/blob/62effed618589a0bec416a87e559c0a9d96289bb/specification/configuration/sdk-environment-variables.md#parsing-empty-value
|
|
//
|
|
// > The SDK MUST interpret an empty value of an environment variable the
|
|
// > same way as when the variable is unset.
|
|
for _, key := range f.keys {
|
|
vRaw := os.Getenv(key)
|
|
if vRaw != "" {
|
|
return f.parse(vRaw)
|
|
}
|
|
}
|
|
return v, ok
|
|
}
|
|
|
|
// Enabled reports whether the feature is enabled.
|
|
func (f Feature[T]) Enabled() bool {
|
|
_, ok := f.Lookup()
|
|
return ok
|
|
}
|