Skip to content

Commit 23c7d3d

Browse files
committed
Update example tests
1 parent a8a0198 commit 23c7d3d

File tree

1 file changed

+51
-20
lines changed

1 file changed

+51
-20
lines changed

processors/minsev/example_test.go

Lines changed: 51 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,36 +5,28 @@ package minsev_test
55

66
import (
77
"context"
8+
"encoding/json"
89
"fmt"
910
"os"
10-
"strings"
11-
"sync"
1211

1312
"go.opentelemetry.io/otel/log"
1413
logsdk "go.opentelemetry.io/otel/sdk/log"
1514

1615
"go.opentelemetry.io/contrib/processors/minsev"
1716
)
1817

19-
const key = "OTEL_LOG_LEVEL"
20-
21-
var getSeverity = sync.OnceValue(func() log.Severity {
22-
conv := map[string]log.Severity{
23-
"": log.SeverityInfo, // Default to SeverityInfo for unset.
24-
"debug": log.SeverityDebug,
25-
"info": log.SeverityInfo,
26-
"warn": log.SeverityWarn,
27-
"error": log.SeverityError,
28-
}
29-
// log.SeverityUndefined for unknown values.
30-
return conv[strings.ToLower(os.Getenv(key))]
31-
})
32-
33-
type EnvSeverity struct{}
18+
type EnvSeverity struct {
19+
Var string
20+
}
3421

35-
func (EnvSeverity) Severity() log.Severity { return getSeverity() }
22+
func (s EnvSeverity) Severity() log.Severity {
23+
var sev minsev.Severity
24+
_ = sev.UnmarshalText([]byte(os.Getenv(s.Var)))
25+
return sev.Severity() // Default to SeverityInfo if not set or error.
26+
}
3627

37-
func ExampleSeveritier() {
28+
func ExampleSeveritier_environment() {
29+
const key = "LOG_LEVEL"
3830
// Mock an environmental variable setup that would be done externally.
3931
_ = os.Setenv(key, "error")
4032

@@ -43,7 +35,7 @@ func ExampleSeveritier() {
4335

4436
// Wrap the processor so that it filters by severity level defined
4537
// via environmental variable.
46-
processor = minsev.NewLogProcessor(processor, EnvSeverity{})
38+
processor = minsev.NewLogProcessor(processor, EnvSeverity{key})
4739
lp := logsdk.NewLoggerProvider(
4840
logsdk.WithProcessor(processor),
4941
)
@@ -62,3 +54,42 @@ func ExampleSeveritier() {
6254
// false
6355
// true
6456
}
57+
58+
func ExampleSeveritier_json() {
59+
// Demonstrates how to use a Severitier that reads from a JSON
60+
// configuration.
61+
62+
// Example JSON configuration that specifies the minimum severity level.
63+
// This would be provided by the application user.
64+
const jsonConfig = `{"log_level":"error"}`
65+
66+
var config struct {
67+
Severity minsev.Severity `json:"log_level"`
68+
}
69+
if err := json.Unmarshal([]byte(jsonConfig), &config); err != nil {
70+
panic(err)
71+
}
72+
73+
// Existing processor that emits telemetry.
74+
var processor logsdk.Processor = logsdk.NewBatchProcessor(nil)
75+
76+
// Wrap the processor so that it filters by severity level defined
77+
// in the JSON configuration. Note that the severity level itself is a
78+
// Severitier implementation.
79+
processor = minsev.NewLogProcessor(processor, config.Severity)
80+
lp := logsdk.NewLoggerProvider(logsdk.WithProcessor(processor))
81+
82+
// Show that Logs API respects the minimum severity level processor.
83+
l := lp.Logger("ExampleSeveritier")
84+
85+
ctx := context.Background()
86+
params := log.EnabledParameters{Severity: log.SeverityDebug}
87+
fmt.Println(l.Enabled(ctx, params))
88+
89+
params.Severity = log.SeverityError
90+
fmt.Println(l.Enabled(ctx, params))
91+
92+
// Output:
93+
// false
94+
// true
95+
}

0 commit comments

Comments
 (0)