1
0
mirror of https://github.com/open-telemetry/opentelemetry-go.git synced 2025-08-10 22:31:50 +02:00

sdk/log: Add altering Processor example (#5550)

Towards https://github.com/open-telemetry/opentelemetry-go/issues/5065

---------

Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
This commit is contained in:
Robert Pająk
2024-06-27 11:55:29 +02:00
committed by GitHub
parent 418f19d341
commit cda5094cdd
2 changed files with 46 additions and 0 deletions

45
sdk/log/example_test.go Normal file
View File

@@ -0,0 +1,45 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
package log_test
import (
"context"
"strings"
"go.opentelemetry.io/otel/log"
logsdk "go.opentelemetry.io/otel/sdk/log"
)
// Use a processor which redacts sensitive data from some attributes.
func ExampleProcessor_redact() {
// Existing processor that emits telemetry.
var processor logsdk.Processor = logsdk.NewBatchProcessor(nil)
// Wrap the processor so that it redacts values from token attributes.
processor = &RedactTokensProcessor{processor}
// The created processor can then be registered with
// the OpenTelemetry Logs SDK using the WithProcessor option.
_ = logsdk.NewLoggerProvider(
logsdk.WithProcessor(processor),
)
}
// RedactTokensProcessor is a [logsdk.Processor] decorator that redacts values
// from attributes containing "token" in the key.
type RedactTokensProcessor struct {
logsdk.Processor
}
// OnEmit redacts values from attributes containing "token" in the key
// by replacing them with a REDACTED value.
func (s *RedactTokensProcessor) OnEmit(ctx context.Context, record logsdk.Record) error {
record.WalkAttributes(func(kv log.KeyValue) bool {
if strings.Contains(strings.ToLower(kv.Key), "token") {
record.AddAttributes(log.String(kv.Key, "REDACTED"))
}
return true
})
return s.Processor.OnEmit(ctx, record)
}

View File

@@ -166,6 +166,7 @@ func (r *Record) WalkAttributes(f func(log.KeyValue) bool) {
}
// AddAttributes adds attributes to the log record.
// Attributes in attrs will overwrite any attribute already added to r with the same key.
func (r *Record) AddAttributes(attrs ...log.KeyValue) {
n := r.AttributesLen()
if n == 0 {