summaryrefslogtreecommitdiff
path: root/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/config.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/config.go')
-rw-r--r--vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/config.go85
1 files changed, 85 insertions, 0 deletions
diff --git a/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/config.go b/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/config.go
new file mode 100644
index 000000000..0ba3424e2
--- /dev/null
+++ b/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/config.go
@@ -0,0 +1,85 @@
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+
+package stdouttrace // import "go.opentelemetry.io/otel/exporters/stdout/stdouttrace"
+
+import (
+ "io"
+ "os"
+)
+
+var (
+ defaultWriter = os.Stdout
+ defaultPrettyPrint = false
+ defaultTimestamps = true
+)
+
+// config contains options for the STDOUT exporter.
+type config struct {
+ // Writer is the destination. If not set, os.Stdout is used.
+ Writer io.Writer
+
+ // PrettyPrint will encode the output into readable JSON. Default is
+ // false.
+ PrettyPrint bool
+
+ // Timestamps specifies if timestamps should be printed. Default is
+ // true.
+ Timestamps bool
+}
+
+// newConfig creates a validated Config configured with options.
+func newConfig(options ...Option) config {
+ cfg := config{
+ Writer: defaultWriter,
+ PrettyPrint: defaultPrettyPrint,
+ Timestamps: defaultTimestamps,
+ }
+ for _, opt := range options {
+ cfg = opt.apply(cfg)
+ }
+ return cfg
+}
+
+// Option sets the value of an option for a Config.
+type Option interface {
+ apply(config) config
+}
+
+// WithWriter sets the export stream destination.
+func WithWriter(w io.Writer) Option {
+ return writerOption{w}
+}
+
+type writerOption struct {
+ W io.Writer
+}
+
+func (o writerOption) apply(cfg config) config {
+ cfg.Writer = o.W
+ return cfg
+}
+
+// WithPrettyPrint prettifies the emitted output.
+func WithPrettyPrint() Option {
+ return prettyPrintOption(true)
+}
+
+type prettyPrintOption bool
+
+func (o prettyPrintOption) apply(cfg config) config {
+ cfg.PrettyPrint = bool(o)
+ return cfg
+}
+
+// WithoutTimestamps sets the export stream to not include timestamps.
+func WithoutTimestamps() Option {
+ return timestampsOption(false)
+}
+
+type timestampsOption bool
+
+func (o timestampsOption) apply(cfg config) config {
+ cfg.Timestamps = bool(o)
+ return cfg
+}