1
0
mirror of https://github.com/open-telemetry/opentelemetry-go.git synced 2025-02-07 13:31:42 +02:00
opentelemetry-go/sdk/log/logtest/example_test.go
Tyler Yahn 36bee9356a
Use reflect to construct a Record in logtest (#5275)
* Use reflect to construct Record

* Fix merge

* Fix merge
2024-05-06 09:03:14 -07:00

65 lines
1.4 KiB
Go

// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
// Package logtest is a testing helper package.
package logtest_test
import (
"context"
"fmt"
"io"
"os"
logapi "go.opentelemetry.io/otel/log"
"go.opentelemetry.io/otel/sdk/instrumentation"
"go.opentelemetry.io/otel/sdk/log"
"go.opentelemetry.io/otel/sdk/log/logtest"
)
func ExampleRecordFactory() {
exp := exporter{os.Stdout}
rf := logtest.RecordFactory{
InstrumentationScope: &instrumentation.Scope{Name: "myapp"},
}
rf.Body = logapi.StringValue("foo")
r1 := rf.NewRecord()
rf.Body = logapi.StringValue("bar")
r2 := rf.NewRecord()
_ = exp.Export(context.Background(), []log.Record{r1, r2})
// Output:
// scope=myapp msg=foo
// scope=myapp msg=bar
}
// Compile time check exporter implements log.Exporter.
var _ log.Exporter = exporter{}
type exporter struct{ io.Writer }
func (e exporter) Export(ctx context.Context, records []log.Record) error {
for i, r := range records {
if i != 0 {
if _, err := e.Write([]byte("\n")); err != nil {
return err
}
}
if _, err := fmt.Fprintf(e, "scope=%s msg=%s", r.InstrumentationScope().Name, r.Body().String()); err != nil {
return err
}
}
return nil
}
func (e exporter) Shutdown(context.Context) error {
return nil
}
// appropriate error should be returned in these situations.
func (e exporter) ForceFlush(context.Context) error {
return nil
}