Source File
doc.go
Belonging Package
go.opentelemetry.io/otel/log
// Copyright The OpenTelemetry Authors// SPDX-License-Identifier: Apache-2.0/*Package log provides the OpenTelemetry Logs API.This API is separate from its implementation so the instrumentation built fromit is reusable. See [go.opentelemetry.io/otel/sdk/log] for the officialOpenTelemetry implementation of this API.The log package provides the OpenTelemetry Logs API, which serves as a standardinterface for generating and managing log records within the OpenTelemetry ecosystem.This package allows users to emit LogRecords, enabling structured, context-rich loggingthat can be easily integrated with observability tools. It ensures that log data is capturedin a way that is consistent with OpenTelemetry's data model.This package can be used to create bridges between existing logging libraries and OpenTelemetry.Log bridges allow integrating the existing logging setups with OpenTelemetry.Log bridges can be found in the [registry].# API ImplementationsThis package does not conform to the standard Go versioning policy, all of itsinterfaces may have methods added to them without a package major version bump.This non-standard API evolution could surprise an uninformed implementationauthor. They could unknowingly build their implementation in a way that wouldresult in a runtime panic for their users that update to the new API.The API is designed to help inform an instrumentation author about thisnon-standard API evolution. It requires them to choose a default behavior forunimplemented interface methods. There are three behavior choices they canmake:- Compilation failure- Panic- Default to another implementationAll interfaces in this API embed a corresponding interface from[go.opentelemetry.io/otel/log/embedded]. If an author wants the defaultbehavior of their implementations to be a compilation failure, signaling totheir users they need to update to the latest version of that implementation,they need to embed the corresponding interface from[go.opentelemetry.io/otel/log/embedded] in their implementation. For example,import "go.opentelemetry.io/otel/log/embedded"type LoggerProvider struct {embedded.LoggerProvider// ...}If an author wants the default behavior of their implementations to a panic,they need to embed the API interface directly.import "go.opentelemetry.io/otel/log"type LoggerProvider struct {log.LoggerProvider// ...}This is not a recommended behavior as it could lead to publishing packages thatcontain runtime panics when users update other package that use newer versionsof [go.opentelemetry.io/otel/log].Finally, an author can embed another implementation in theirs. The embeddedimplementation will be used for methods not defined by the author. For example,an author who wants to default to silently dropping the call can use[go.opentelemetry.io/otel/log/noop]:import "go.opentelemetry.io/otel/log/noop"type LoggerProvider struct {noop.LoggerProvider// ...}It is strongly recommended that authors only embedgo.opentelemetry.io/otel/log/noop if they choose this default behavior. Thatimplementation is the only one OpenTelemetry authors can guarantee will fullyimplement all the API interfaces when a user updates their API.[registry]: https://opentelemetry.io/ecosystem/registry/?language=go&component=log-bridge*/package log // import "go.opentelemetry.io/otel/log"
![]() |
The pages are generated with Golds v0.8.2. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds. |