Skip to content

Commit

Permalink
sdk/log: Add filtering Processor example (#5543)
Browse files Browse the repository at this point in the history
Towards #5065
  • Loading branch information
pellared authored Jul 1, 2024
1 parent d7e5001 commit b477e34
Showing 1 changed file with 49 additions and 0 deletions.
49 changes: 49 additions & 0 deletions sdk/log/example_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,55 @@ import (
logsdk "go.opentelemetry.io/otel/sdk/log"
)

// Use a processor that filters out records based on the provided context.
func ExampleProcessor_filtering() {
// Existing processor that emits telemetry.
var processor logsdk.Processor = logsdk.NewBatchProcessor(nil)

// Wrap the processor so that it ignores processing log records
// when a context deriving from WithIgnoreLogs is passed
// to the logging methods.
processor = &ContextFilterProcessor{processor}

// The created processor can then be registered with
// the OpenTelemetry Logs SDK using the WithProcessor option.
_ = logsdk.NewLoggerProvider(
logsdk.WithProcessor(processor),
)
}

type key struct{}

var igoreLogsKey key

// WithIgnoreLogs returns a context which is used by [ContextFilterProcessor]
// to filter out log records.
func WithIgnoreLogs(ctx context.Context) context.Context {
return context.WithValue(ctx, igoreLogsKey, true)
}

// ContextFilterProcessor filters out logs when a context deriving from
// [WithIgnoreLogs] is passed to its methods.
type ContextFilterProcessor struct {
logsdk.Processor
}

func (p *ContextFilterProcessor) OnEmit(ctx context.Context, record logsdk.Record) error {
if ignoreLogs(ctx) {
return nil
}
return p.Processor.OnEmit(ctx, record)
}

func (p *ContextFilterProcessor) Enabled(ctx context.Context, record logsdk.Record) bool {
return !ignoreLogs(ctx) && p.Processor.Enabled(ctx, record)
}

func ignoreLogs(ctx context.Context) bool {
_, ok := ctx.Value(igoreLogsKey).(bool)
return ok
}

// Use a processor which redacts sensitive data from some attributes.
func ExampleProcessor_redact() {
// Existing processor that emits telemetry.
Expand Down

0 comments on commit b477e34

Please sign in to comment.