diff --git a/spec-compliance-matrix.md b/spec-compliance-matrix.md index 2809cc4f8b9..66a7503b3f8 100644 --- a/spec-compliance-matrix.md +++ b/spec-compliance-matrix.md @@ -94,117 +94,117 @@ formats is required. Implementing more than one format is optional. ## Metrics -| Feature | Optional | Go | Java | JS | Python | Ruby | Erlang | PHP | Rust | C++ | .NET | Swift | -|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------|----|------|----|--------|------|--------|-----|------|-----|------|-------| -| The API provides a way to set and get a global default `MeterProvider`. | X | + | + | + | + | | | | | + | - | | -| It is possible to create any number of `MeterProvider`s. | X | + | + | + | + | | | | | | + | | -| `MeterProvider` provides a way to get a `Meter`. | | + | + | + | + | | | | | + | - | | -| `get_meter` accepts name, `version` and `schema_url`. | | + | + | + | + | | | | | + | - | | -| `get_meter` accepts `attributes`. | | | | | | | | | | | | | -| When an invalid `name` is specified a working `Meter` implementation is returned as a fallback. | | + | + | + | + | | | | | + | - | | -| The fallback `Meter` `name` property keeps its original invalid value. | X | - | - | + | + | | | | | - | - | | -| Associate `Meter` with `InstrumentationScope`. | | | + | + | + | | | | | | | | -| The meter provides functions to create a new `Counter`. | | + | + | + | + | | | | | + | + | | -| The meter provides functions to create a new `AsynchronousCounter`. | | + | + | + | + | | | | | + | + | | -| The meter provides functions to create a new `Histogram`. | | + | + | + | + | | | | | + | + | | -| The meter provides functions to create a new `AsynchronousGauge`. | | + | + | + | + | | | | | + | + | | -| The meter provides functions to create a new `UpDownCounter`. | | + | + | + | + | | | | | + | - | | -| The meter provides functions to create a new `AsynchronousUpDownCounter`. | | + | + | + | + | | | | | + | - | | -| Instruments have `name` | | + | + | + | + | | | | | + | + | | -| Instruments have kind. | | + | + | + | + | | | | | | + | | -| Instruments have an optional unit of measure. | | + | + | + | + | | | | | + | + | | -| Instruments have an optional description. | | + | + | + | + | | | | | + | + | | -| A valid instrument MUST be created and warning SHOULD be emitted when multiple instruments are registered under the same `Meter` using the same `name`. | | | + | + | + | | | | | | | | -| It is possible to register two instruments with same `name` under different `Meter`s. | | + | + | + | + | | | | | | + | | -| Instrument names conform to the specified syntax. | | - | + | | + | | | | | | + | | -| Instrument units conform to the specified syntax. | | - | + | | + | | | | | | + | | -| Instrument descriptions conform to the specified syntax. | | - | + | | - | | | | | | + | | -| `create_counter` returns a `Counter`. | | + | + | + | + | | | | | + | + | | -| The API for `Counter` accepts the name, unit and description of the instrument. | | + | + | + | + | | | | | + | + | | -| `Counter` has an `add` method. | | + | + | + | + | | | | | + | + | | -| The `add` method returns no (or dummy) value. | X | + | + | + | + | | | | | + | + | | -| The `add` method accepts optional attributes. | | + | + | + | + | | | | | + | + | | -| The `add` method accepts the increment amount. | | + | + | + | + | | | | | + | + | | -| The `add` method of `Counter` accepts only positive amounts. | | + | + | + | + | | | | | | - | | -| `create_asynchronous_counter` creates an `AsynchronousCounter`. | | + | + | + | + | | | | | + | + | | -| The API for `AsynchronousCounter` accepts the name, unit and description of the instrument. | | + | + | + | + | | | | | + | + | | -| The API for `AsynchronousCounter` accepts a callback. | | + | + | + | + | | | | | + | + | | -| `create_up_down_counter` returns an `UpDownCounter`. | | + | + | + | + | | | | | + | - | | -| The API for `UpDownCounter` accepts the name, unit and description of the instrument. | | + | + | + | + | | | | | + | - | | -| `UpDownCounter` has an `add` method. | | + | + | + | + | | | | | + | - | | -| The `add` method returns no (or dummy) value. | X | + | + | + | + | | | | | + | - | | -| The `add` method accepts optional attributes. | | + | + | + | + | | | | | + | - | | -| The `add` method accepts the increment amount. | | + | + | + | + | | | | | + | - | | -| `create_asynchronous_up_down_counter` creates an `AsynchronousUpDownCounter`. | | + | + | + | + | | | | | + | - | | -| The API for `AsynchronousUpDownCounter` accepts the name, unit and description of the instrument. | | + | + | + | + | | | | | + | - | | -| The API for `AsynchronousUpDownCounter` accepts a callback. | | + | + | + | + | | | | | + | - | | -| `create_histogram` returns a `Histogram`. | | + | + | + | + | | | | | + | + | | -| The API for `Histogram` accepts the name, unit and description of the instrument. | | + | + | + | + | | | | | + | + | | -| `Histogram` has a `record` method. | | + | + | + | + | | | | | + | + | | -| The `record` method return no (or dummy) value. | X | + | + | + | + | | | | | + | + | | -| The `record` method accepts optional attributes. | | + | + | + | + | | | | | + | + | | -| The `record` method accepts a value. | | + | + | + | + | | | | | + | + | | -| The `record` method of `Histogram` accepts only positive amounts. | | - | + | + | + | | | | | | + | | -| `create_asynchronous_gauge` creates an `Asynchronous Gauge`. | | + | + | + | + | | | | | + | + | | -| The API for `AsynchronousGauge` accepts the name, unit and description of the instrument. | | + | + | + | + | | | | | + | + | | -| The API for `AsynchronousGauge` accepts a callback. | | + | + | + | + | | | | | + | + | | -| The callback function of an `Asynchronous` instrument does not block indefinitely. | X | - | - | + | - | | | | | | ? | | -| The callback function reports `Measurement`s. | | + | + | + | + | | | | | + | + | | -| There is a way to pass state to the callback. | X | + | + | | + | | | | | | + | | -| All methods of `MeterProvider` are safe to be called concurrently. | | + | + | + | - | | | | | + | + | | -| All methods of `Meter` are safe to be called concurrently. | | + | + | + | - | | | | | | + | | -| All methods of any instrument are safe to be called concurrently. | | + | + | + | - | | | | | | + | | -| `MeterProvider` allows a `Resource` to be specified. | | + | + | + | + | | | | | + | + | | -| A specified `Resource` can be associated with all the produced metrics from any `Meter` from the `MeterProvider`. | | + | + | + | + | | | | | + | + | | -| The supplied `name`, `version` and `schema_url` arguments passed to the `MeterProvider` are used to create an `InstrumentationLibrary` instance stored in the `Meter`. | | + | - | | + | | | | | + | - | | -| The supplied `name`, `version` and `schema_url` arguments passed to the `MeterProvider` are used to create an `InstrumentationScope` instance stored in the `Meter`. | | | + | + | | | | | | | | | -| Configuration is managed solely by the `MeterProvider`. | | + | + | + | + | | | | | + | + | | -| The `MeterProvider` provides methods to update the configuration | X | - | - | - | + | | | | | | + | | -| The updated configuration applies to all already returned `Meter`s. | if above | - | - | - | - | | | | | | + | | -| There is a way to register `View`s with a `MeterProvider`. | | - | + | + | + | | | | | + | + | | -| The `View` instrument selection criteria is as specified. | | | + | + | + | | | | | + | + | | -| The `View` instrument selection criteria supports wildcards. | X | | + | + | + | | | | | + | + | | -| The `View` instrument selection criteria supports the match-all wildcard. | | | + | + | + | | | | | + | + | | -| The name of the `View` can be specified. | | | + | + | + | | | | | + | + | | -| The `View` allows configuring the name description, attributes keys and aggregation of the resulting metric stream. | | | + | + | + | | | | | + | - | | -| The `View` allows configuring the exemplar reservoir of resulting metric stream. | X | | - | | - | | | | | | - | | -| The SDK allows more than one `View` to be specified per instrument. | X | | + | + | + | | | | | + | + | | -| The `Drop` aggregation is available. | | + | + | + | - | | | | | + | + | | -| The `Drop` aggregation drops all measurements and does not produce a metric stream. | | + | + | + | - | | | | | | + | | -| The `Default` aggregation is available. | | + | + | + | - | | | | | + | + | | -| The `Default` aggregation uses the specified aggregation by instrument. | | + | + | + | - | | | | | + | + | | -| The `Sum` aggregation is available. | | + | + | + | + | | | | | + | + | | -| The `Sum` aggregation performs as specified. | | + | + | + | + | | | | | + | + | | -| The `LastValue` aggregation is available. | | + | + | + | + | | | | | + | + | | -| The `LastValue` aggregation performs as specified. | | + | + | + | + | | | | | + | + | | -| The `Histogram` aggregation is available. | | + | + | + | + | | | | | + | + | | -| The `Histogram` aggregation performs as specified. | | + | + | | + | | | | | + | + | | -| The explicit bucket `Histogram` aggregation is available. | | - | + | + | + | | | | | | + | | -| The explicit bucket `Histogram` aggregation performs as specified. | | - | + | + | + | | | | | | + | | -| The metrics Reader implementation supports registering metric Exporters | | | + | + | + | | | | | | + | | -| The metrics Reader implementation supports configuring the default aggregation on the basis of instrument kind. | | | - | | + | | | | | | - | | -| The metrics Reader implementation supports configuring the default temporality on the basis of instrument kind. | | | + | + | + | | | | | | | | -| The metrics Exporter has access to the aggregated metrics data (aggregated points, not raw measurements). | | + | + | + | + | | | | | | + | | -| The metrics Exporter `export` function can not be called concurrently from the same Exporter instance. | | + | + | + | - | | | | | | + | | -| The metrics Exporter `export` function does not block indefinitely. | | + | + | + | - | | | | | + | + | | -| The metrics Exporter `export` function receives a batch of metrics. | | + | + | + | + | | | | | + | + | | -| The metrics Exporter `export` function returns `Success` or `Failure`. | | + | + | + | + | | | | | + | + | | -| The metrics Exporter provides a `ForceFlush` function. | | - | + | + | - | | | | | + | + | | -| The metrics Exporter `ForceFlush` can inform the caller whether it succeeded, failed or timed out. | | | + | + | - | | | | | + | + | | -| The metrics Exporter provides a `shutdown` function. | | + | + | + | + | | | | | + | + | | -| The metrics Exporter `shutdown` function do not block indefinitely. | | + | + | + | + | | | | | + | + | | -| The metrics SDK samples `Exemplar`s from measurements. | | | + | | - | | | | | | - | | -| Exemplar sampling can be disabled. | | | - | | - | | | | | | - | | -| The metrics SDK samples measurements in the context of a sampled trace by default. | | | + | | - | | | | | | - | | -| Exemplars retain any attributes available in the measurement that are not preserved by aggregation or view configuration. | | | + | | - | | | | | | - | | -| Exemplars contain the associated trace id and span id of the active span in the Context when the measurement was taken. | | | + | | - | | | | | | - | | -| Exemplars contain the timestamp when the measurement was taken. | | | + | | - | | | | | | - | | -| The metrics SDK provides an `ExemplarReservoir` interface or extension point. | X | | - | | - | | | | | | - | | -| An `ExemplarReservoir` has an `offer` method with access to the measurement value, attributes, `Context` and timestamp. | X | | - | | - | | | | | | - | | -| The metrics SDK provides a `SimpleFixedSizeExemplarReservoir` that is used by default for all aggregations except `ExplicitBucketHistogram`. | | | + | | - | | | | | | - | | -| The metrics SDK provides an `AlignedHistogramBucketExemplarReservoir` that is used by default for `ExplicitBucketHistogram` aggregation. | | | + | | - | | | | | | - | | -| The metrics SDK provides an `ExemplarFilter` interface or extension point. | X | | - | | - | | | | | | - | | -| An `ExemplarFilter` has access to the measurement value, attributes, `Context` and timestamp. | X | | - | | - | | | | | | - | | +| Feature | Optional | Go | Java | JS | Python | Ruby | Erlang | PHP | Rust | C++ | .NET | Swift | +|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------|-----|------|-----|--------|------|--------|-----|------|-----|------|-------| +| The API provides a way to set and get a global default `MeterProvider`. | X | + | + | + | + | | | | | + | - | | +| It is possible to create any number of `MeterProvider`s. | X | + | + | + | + | | | | | | + | | +| `MeterProvider` provides a way to get a `Meter`. | | + | + | + | + | | | | | + | - | | +| `get_meter` accepts name, `version` and `schema_url`. | | + | + | + | + | | | | | + | - | | +| `get_meter` accepts `attributes`. | | | | | | | | | | | | | +| When an invalid `name` is specified a working `Meter` implementation is returned as a fallback. | | + | + | + | + | | | | | + | - | | +| The fallback `Meter` `name` property keeps its original invalid value. | X | - | - | + | + | | | | | - | - | | +| Associate `Meter` with `InstrumentationScope`. | | | + | + | + | | | | | | | | +| The meter provides functions to create a new `Counter`. | | + | + | + | + | | | | | + | + | | +| The meter provides functions to create a new `AsynchronousCounter`. | | + | + | + | + | | | | | + | + | | +| The meter provides functions to create a new `Histogram`. | | + | + | + | + | | | | | + | + | | +| The meter provides functions to create a new `AsynchronousGauge`. | | + | + | + | + | | | | | + | + | | +| The meter provides functions to create a new `UpDownCounter`. | | + | + | + | + | | | | | + | - | | +| The meter provides functions to create a new `AsynchronousUpDownCounter`. | | + | + | + | + | | | | | + | - | | +| Instruments have `name` | | + | + | + | + | | | | | + | + | | +| Instruments have kind. | | + | + | + | + | | | | | | + | | +| Instruments have an optional unit of measure. | | + | + | + | + | | | | | + | + | | +| Instruments have an optional description. | | + | + | + | + | | | | | + | + | | +| A valid instrument MUST be created and warning SHOULD be emitted when multiple instruments are registered under the same `Meter` using the same `name`. | | | + | + | + | | | | | | | | +| It is possible to register two instruments with same `name` under different `Meter`s. | | + | + | + | + | | | | | | + | | +| Instrument names conform to the specified syntax. | | - | + | | + | | | | | | + | | +| Instrument units conform to the specified syntax. | | - | + | | + | | | | | | + | | +| Instrument descriptions conform to the specified syntax. | | - | + | | - | | | | | | + | | +| `create_counter` returns a `Counter`. | | + | + | + | + | | | | | + | + | | +| The API for `Counter` accepts the name, unit and description of the instrument. | | + | + | + | + | | | | | + | + | | +| `Counter` has an `add` method. | | + | + | + | + | | | | | + | + | | +| The `add` method returns no (or dummy) value. | X | + | + | + | + | | | | | + | + | | +| The `add` method accepts optional attributes. | | + | + | + | + | | | | | + | + | | +| The `add` method accepts the increment amount. | | + | + | + | + | | | | | + | + | | +| The `add` method of `Counter` accepts only positive amounts. | | + | + | + | + | | | | | | - | | +| `create_asynchronous_counter` creates an `AsynchronousCounter`. | | + | + | + | + | | | | | + | + | | +| The API for `AsynchronousCounter` accepts the name, unit and description of the instrument. | | + | + | + | + | | | | | + | + | | +| The API for `AsynchronousCounter` accepts a callback. | | + | + | + | + | | | | | + | + | | +| `create_up_down_counter` returns an `UpDownCounter`. | | + | + | + | + | | | | | + | - | | +| The API for `UpDownCounter` accepts the name, unit and description of the instrument. | | + | + | + | + | | | | | + | - | | +| `UpDownCounter` has an `add` method. | | + | + | + | + | | | | | + | - | | +| The `add` method returns no (or dummy) value. | X | + | + | + | + | | | | | + | - | | +| The `add` method accepts optional attributes. | | + | + | + | + | | | | | + | - | | +| The `add` method accepts the increment amount. | | + | + | + | + | | | | | + | - | | +| `create_asynchronous_up_down_counter` creates an `AsynchronousUpDownCounter`. | | + | + | + | + | | | | | + | - | | +| The API for `AsynchronousUpDownCounter` accepts the name, unit and description of the instrument. | | + | + | + | + | | | | | + | - | | +| The API for `AsynchronousUpDownCounter` accepts a callback. | | + | + | + | + | | | | | + | - | | +| `create_histogram` returns a `Histogram`. | | + | + | + | + | | | | | + | + | | +| The API for `Histogram` accepts the name, unit and description of the instrument. | | + | + | + | + | | | | | + | + | | +| `Histogram` has a `record` method. | | + | + | + | + | | | | | + | + | | +| The `record` method return no (or dummy) value. | X | + | + | + | + | | | | | + | + | | +| The `record` method accepts optional attributes. | | + | + | + | + | | | | | + | + | | +| The `record` method accepts a value. | | + | + | + | + | | | | | + | + | | +| The `record` method of `Histogram` accepts only positive amounts. | | - | + | + | + | | | | | | + | | +| `create_asynchronous_gauge` creates an `Asynchronous Gauge`. | | + | + | + | + | | | | | + | + | | +| The API for `AsynchronousGauge` accepts the name, unit and description of the instrument. | | + | + | + | + | | | | | + | + | | +| The API for `AsynchronousGauge` accepts a callback. | | + | + | + | + | | | | | + | + | | +| The callback function of an `Asynchronous` instrument does not block indefinitely. | X | - | - | + | - | | | | | | ? | | +| The callback function reports `Measurement`s. | | + | + | + | + | | | | | + | + | | +| There is a way to pass state to the callback. | X | + | + | | + | | | | | | + | | +| All methods of `MeterProvider` are safe to be called concurrently. | | + | + | + | - | | | | | + | + | | +| All methods of `Meter` are safe to be called concurrently. | | + | + | + | - | | | | | | + | | +| All methods of any instrument are safe to be called concurrently. | | + | + | + | - | | | | | | + | | +| `MeterProvider` allows a `Resource` to be specified. | | + | + | + | + | | | | | + | + | | +| A specified `Resource` can be associated with all the produced metrics from any `Meter` from the `MeterProvider`. | | + | + | + | + | | | | | + | + | | +| The supplied `name`, `version` and `schema_url` arguments passed to the `MeterProvider` are used to create an `InstrumentationLibrary` instance stored in the `Meter`. | | + | - | | + | | | | | + | - | | +| The supplied `name`, `version` and `schema_url` arguments passed to the `MeterProvider` are used to create an `InstrumentationScope` instance stored in the `Meter`. | | | + | + | | | | | | | | | +| Configuration is managed solely by the `MeterProvider`. | | + | + | + | + | | | | | + | + | | +| The `MeterProvider` provides methods to update the configuration | X | - | - | - | + | | | | | | + | | +| The updated configuration applies to all already returned `Meter`s. | if above | - | - | - | - | | | | | | + | | +| There is a way to register `View`s with a `MeterProvider`. | | - | + | + | + | | | | | + | + | | +| The `View` instrument selection criteria is as specified. | | | + | + | + | | | | | + | + | | +| The `View` instrument selection criteria supports wildcards. | X | | + | + | + | | | | | + | + | | +| The `View` instrument selection criteria supports the match-all wildcard. | | | + | + | + | | | | | + | + | | +| The name of the `View` can be specified. | | | + | + | + | | | | | + | + | | +| The `View` allows configuring the name description, attributes keys and aggregation of the resulting metric stream. | | | + | + | + | | | | | + | - | | +| The `View` allows configuring the exemplar reservoir of resulting metric stream. | X | | - | | - | | | | | | - | | +| The SDK allows more than one `View` to be specified per instrument. | X | | + | + | + | | | | | + | + | | +| The `Drop` aggregation is available. | | + | + | + | - | | | | | + | + | | +| The `Drop` aggregation drops all measurements and does not produce a metric stream. | | + | + | + | - | | | | | | + | | +| The `Default` aggregation is available. | | + | + | + | - | | | | | + | + | | +| The `Default` aggregation uses the specified aggregation by instrument. | | + | + | + | - | | | | | + | + | | +| The `Sum` aggregation is available. | | + | + | + | + | | | | | + | + | | +| The `Sum` aggregation performs as specified. | | + | + | + | + | | | | | + | + | | +| The `LastValue` aggregation is available. | | + | + | + | + | | | | | + | + | | +| The `LastValue` aggregation performs as specified. | | + | + | + | + | | | | | + | + | | +| The `Histogram` aggregation is available. | | + | + | + | + | | | | | + | + | | +| The `Histogram` aggregation performs as specified. | | + | + | | + | | | | | + | + | | +| The explicit bucket `Histogram` aggregation is available. | | - | + | + | + | | | | | | + | | +| The explicit bucket `Histogram` aggregation performs as specified. | | - | + | + | + | | | | | | + | | +| The metrics Reader implementation supports registering metric Exporters | | | + | + | + | | | | | | + | | +| The metrics Reader implementation supports configuring the default aggregation on the basis of instrument kind. | | | + | | + | | | | | | - | | +| The metrics Reader implementation supports configuring the default temporality on the basis of instrument kind. | | | + | + | + | | | | | | | | +| The metrics Exporter has access to the aggregated metrics data (aggregated points, not raw measurements). | | + | + | + | + | | | | | | + | | +| The metrics Exporter `export` function can not be called concurrently from the same Exporter instance. | | + | + | + | - | | | | | | + | | +| The metrics Exporter `export` function does not block indefinitely. | | + | + | + | - | | | | | + | + | | +| The metrics Exporter `export` function receives a batch of metrics. | | + | + | + | + | | | | | + | + | | +| The metrics Exporter `export` function returns `Success` or `Failure`. | | + | + | + | + | | | | | + | + | | +| The metrics Exporter provides a `ForceFlush` function. | | - | + | + | - | | | | | + | + | | +| The metrics Exporter `ForceFlush` can inform the caller whether it succeeded, failed or timed out. | | | + | + | - | | | | | + | + | | +| The metrics Exporter provides a `shutdown` function. | | + | + | + | + | | | | | + | + | | +| The metrics Exporter `shutdown` function do not block indefinitely. | | + | + | + | + | | | | | + | + | | +| The metrics SDK samples `Exemplar`s from measurements. | | | + | | - | | | | | | - | | +| Exemplar sampling can be disabled. | | | - | | - | | | | | | - | | +| The metrics SDK samples measurements in the context of a sampled trace by default. | | | + | | - | | | | | | - | | +| Exemplars retain any attributes available in the measurement that are not preserved by aggregation or view configuration. | | | + | | - | | | | | | - | | +| Exemplars contain the associated trace id and span id of the active span in the Context when the measurement was taken. | | | + | | - | | | | | | - | | +| Exemplars contain the timestamp when the measurement was taken. | | | + | | - | | | | | | - | | +| The metrics SDK provides an `ExemplarReservoir` interface or extension point. | X | | - | | - | | | | | | - | | +| An `ExemplarReservoir` has an `offer` method with access to the measurement value, attributes, `Context` and timestamp. | X | | - | | - | | | | | | - | | +| The metrics SDK provides a `SimpleFixedSizeExemplarReservoir` that is used by default for all aggregations except `ExplicitBucketHistogram`. | | | + | | - | | | | | | - | | +| The metrics SDK provides an `AlignedHistogramBucketExemplarReservoir` that is used by default for `ExplicitBucketHistogram` aggregation. | | | + | | - | | | | | | - | | +| The metrics SDK provides an `ExemplarFilter` interface or extension point. | X | | - | | - | | | | | | - | | +| An `ExemplarFilter` has access to the measurement value, attributes, `Context` and timestamp. | X | | - | | - | | | | | | - | | ## Logs @@ -213,18 +213,18 @@ Disclaimer: this list of features is still a work in progress, please refer to t | Feature | Optional | Go | Java | JS | Python | Ruby | Erlang | PHP | Rust | C++ | .NET | Swift | |----------------------------------------------|----------|-----|------|-----|--------|------|--------|-----|------|-----|------|-------| | **[Logging SDK](specification/logs/sdk.md)** | Optional | Go | Java | JS | Python | Ruby | Erlang | PHP | Rust | C++ | .NET | Swift | -| LoggerProvider.Get Logger | | | | | | | | | | | - | | +| LoggerProvider.Get Logger | | | + | | | | | | | | - | | | LoggerProvider.Get Logger accepts attributes | | | | | | | | | | | | | -| LoggerProvider.Shutdown | | | | | | | | | | | - | | -| LoggerProvider.ForceFlush | | | | | | | | | | | - | | -| Logger.Emit(LogRecord) | | | | | | | | | | | - | | -| SimpleLogRecordProcessor | | | | | | | | | | | | | -| BatchLogRecordProcessor | | | | | | | | | | | | | -| Can plug custom LogRecordProcessor | | | | | | | | | | | | | +| LoggerProvider.Shutdown | | | + | | | | | | | | - | | +| LoggerProvider.ForceFlush | | | + | | | | | | | | - | | +| Logger.Emit(LogRecord) | | | + | | | | | | | | - | | +| SimpleLogRecordProcessor | | | + | | | | | | | | | | +| BatchLogRecordProcessor | | | + | | | | | | | | | | +| Can plug custom LogRecordProcessor | | | + | | | | | | | | | | | OTLP/gRPC exporter | | | + | | + | | | | | | + | | | OTLP/HTTP exporter | | | + | | + | | | | | | + | | | OTLP File exporter | | | - | | - | | | | | | - | | -| Can plug custom LogRecordExporter | | | | | | | | | | | | | +| Can plug custom LogRecordExporter | | | + | | | | | | | | | | | Implicit Context Injection | | | - | | + | | | | | | + | | | Explicit Context | | | + | | - | | | | | | - | | @@ -265,35 +265,36 @@ Disclaimer: this list of features is still a work in progress, please refer to t Note: Support for environment variables is optional. -|Feature |Go | Java |JS |Python|Ruby|Erlang|PHP|Rust|C++|.NET|Swift| -|--------------------------------------------------|--|------|---|------|----|------|---|----|---|----|-----| -|OTEL_SDK_DISABLED | - | - | - | - | - | - | - | - | - | - | - | -|OTEL_RESOURCE_ATTRIBUTES | + | + | + | + | + | + | + | + | + | + | - | -|OTEL_SERVICE_NAME | + | + | + | + | + | + | + | | | + | | -|OTEL_LOG_LEVEL | - | - | + | [-][py1059] | + | - | - | | - | - | - | -|OTEL_PROPAGATORS | - | + | | + | + | + | - | - | - | - | - | -|OTEL_BSP_* | + | + | | + | + | + | - | + | - | - | - | -|OTEL_BLRP_* | | | | | | | | | | | | -|OTEL_EXPORTER_OTLP_* | + | + | | + | + | + | - | + | + | + | - | -|OTEL_EXPORTER_JAEGER_* | + | + | | + | + | - | - | | - | + | - | -|OTEL_EXPORTER_ZIPKIN_* | - | + | | + | + | - | - | - | - | + | - | -|OTEL_TRACES_EXPORTER | - | + | | + | + | + | + | - | - | - | | -|OTEL_METRICS_EXPORTER | - | + | | + | - | - | | - | - | - | - | -|OTEL_LOGS_EXPORTER | - | + | | + | | | | | | - | | -|OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT | + | + | | + | + | + | + | + | - | - | | -|OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT | + | + | | + | + | + | + | | | - | | -|OTEL_SPAN_EVENT_COUNT_LIMIT | + | + | | + | + | + | + | + | - | - | | -|OTEL_SPAN_LINK_COUNT_LIMIT | + | + | | + | + | + | + | + | - | - | | -|OTEL_EVENT_ATTRIBUTE_COUNT_LIMIT | + | - | | + | + | + | + | | | - | | -|OTEL_LINK_ATTRIBUTE_COUNT_LIMIT | + | - | | + | + | + | + | | | - | | -|OTEL_TRACES_SAMPLER | + | + | | + | + | + | | - | - | - | | -|OTEL_TRACES_SAMPLER_ARG | + | + | | + | + | + | | - | - | - | | -|OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT | + | - | | + | + | - | | | | - | | -|OTEL_ATTRIBUTE_COUNT_LIMIT | + | - | | + | + | - | | | | - | | -|OTEL_METRIC_EXPORT_INTERVAL | - | + | | | | | + | | | - | | -|OTEL_METRIC_EXPORT_TIMEOUT | - | - | | | | | + | | | - | | -|OTEL_METRICS_EXEMPLAR_FILTER | - | + | | | | | | | | - | | -|OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE | - | + | | + | | | | | | - | | +| Feature | Go | Java | JS | Python | Ruby | Erlang | PHP | Rust | C++ | .NET | Swift | +|----------------------------------------------------------|-----|------|-----|-------------|------|--------|-----|------|-----|------|-------| +| OTEL_SDK_DISABLED | - | + | - | - | - | - | - | - | - | - | - | +| OTEL_RESOURCE_ATTRIBUTES | + | + | + | + | + | + | + | + | + | + | - | +| OTEL_SERVICE_NAME | + | + | + | + | + | + | + | | | + | | +| OTEL_LOG_LEVEL | - | - | + | [-][py1059] | + | - | - | | - | - | - | +| OTEL_PROPAGATORS | - | + | | + | + | + | - | - | - | - | - | +| OTEL_BSP_* | + | + | | + | + | + | - | + | - | - | - | +| OTEL_BLRP_* | | + | | | | | | | | | | +| OTEL_EXPORTER_OTLP_* | + | + | | + | + | + | - | + | + | + | - | +| OTEL_EXPORTER_JAEGER_* | + | + | | + | + | - | - | | - | + | - | +| OTEL_EXPORTER_ZIPKIN_* | - | + | | + | + | - | - | - | - | + | - | +| OTEL_TRACES_EXPORTER | - | + | | + | + | + | + | - | - | - | | +| OTEL_METRICS_EXPORTER | - | + | | + | - | - | | - | - | - | - | +| OTEL_LOGS_EXPORTER | - | + | | + | | | | | | - | | +| OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT | + | + | | + | + | + | + | + | - | - | | +| OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT | + | + | | + | + | + | + | | | - | | +| OTEL_SPAN_EVENT_COUNT_LIMIT | + | + | | + | + | + | + | + | - | - | | +| OTEL_SPAN_LINK_COUNT_LIMIT | + | + | | + | + | + | + | + | - | - | | +| OTEL_EVENT_ATTRIBUTE_COUNT_LIMIT | + | - | | + | + | + | + | | | - | | +| OTEL_LINK_ATTRIBUTE_COUNT_LIMIT | + | - | | + | + | + | + | | | - | | +| OTEL_TRACES_SAMPLER | + | + | | + | + | + | | - | - | - | | +| OTEL_TRACES_SAMPLER_ARG | + | + | | + | + | + | | - | - | - | | +| OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT | + | + | | + | + | - | | | | - | | +| OTEL_ATTRIBUTE_COUNT_LIMIT | + | + | | + | + | - | | | | - | | +| OTEL_METRIC_EXPORT_INTERVAL | - | + | | | | | + | | | - | | +| OTEL_METRIC_EXPORT_TIMEOUT | - | - | | | | | + | | | - | | +| OTEL_METRICS_EXEMPLAR_FILTER | - | + | | | | | | | | - | | +| OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE | - | + | | + | | | | | | - | | +| OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION | | + | | | | | | | | | | ## Exporters