Skip to content

Commit 18a37a1

Browse files
authored
SeverityNumber=0 MAY be used to represent an unspecified value (#4535)
Fixes #4478 ## Changes Per #4509 (comment) > > The same is probably done in many languages. Shouldn't we say somewhere in specification that 0 is a "reserved" value as it may be used to model unspecified? > > Yes, I think we can. The main purpose of this PR would then be to allow to have `0` as a "reserved" value as this is how most implementations implement the "unspecified" value e.g. - [OTLP](https://github.com/open-telemetry/opentelemetry-proto/blob/68f9c6329ca91f96333ee5b240e305945b122b70/opentelemetry/proto/logs/v1/logs.proto#L88) - [OTel Collector](https://github.com/open-telemetry/opentelemetry-collector/blob/e1f670844604a5b119d8560bc079ceca4c92bf72/pdata/plog/severity_number.go#L14) - [OTel Java](https://github.com/open-telemetry/opentelemetry-java/blob/a756317511741fa06ad343c12d3599c1b7618a4d/api/all/src/main/java/io/opentelemetry/api/logs/Severity.java#L14) - [OTel Go](https://github.com/open-telemetry/opentelemetry-go/blob/1636bcdd1d59fd7284ee2c65ee22acd038d1e979/log/severity.go#L17) - [OTel PHP](https://github.com/open-telemetry/opentelemetry-php/blob/65c29795232fe96664bd95f417bb2c6e879b5489/src/API/Logs/LogRecord.php#L16) - [OTel Python](https://github.com/open-telemetry/opentelemetry-python/blob/12bcd4508e4aca43667450db090a50b9efab9963/opentelemetry-api/src/opentelemetry/_logs/severity/__init__.py#L31) - [OTel Ruby](https://github.com/open-telemetry/opentelemetry-ruby/blob/4621c02e5b9e476a4fcd892173c55f91500aa699/logs_api/lib/opentelemetry/logs/severity_number.rb#L10) - [OTel C++](https://github.com/open-telemetry/opentelemetry-cpp/blob/d2e728914d290e9e3dc7a97cba848cc055f53653/api/include/opentelemetry/logs/severity.h#L24) - [OTel JS](https://github.com/open-telemetry/opentelemetry-js/blob/main/experimental/packages/api-logs/src/types/LogRecord.ts#L24) Defining `0` as something else would be disruptive for these languages. If it would be safe to "reserve" this value and make it optional. I guess only [OTel Rust](https://github.com/open-telemetry/opentelemetry-rust/blob/7b3db0b6a692574ff4d504ad2b6cd5634316e3a0/opentelemetry/src/logs/record.rs#L141-L192) and [OTel Swift](https://github.com/open-telemetry/opentelemetry-swift/blob/a235bc4636fe0df030fb8a0e9193e0d0367f2238/Sources/OpenTelemetryApi/Logs/Severity.swift#L8-L33) have "proper" enums which does not require handling `0` as unspecified.
1 parent 867445f commit 18a37a1

File tree

2 files changed

+4
-0
lines changed

2 files changed

+4
-0
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ release.
2727
([#4534](https://github.com/open-telemetry/opentelemetry-specification/pull/4534))
2828
- Stabilize SDK and No-Op `Logger.Enabled`.
2929
([#4536](https://github.com/open-telemetry/opentelemetry-specification/pull/4536))
30+
- `SeverityNumber=0` MAY be used to represent an unspecified value.
31+
([#4535](https://github.com/open-telemetry/opentelemetry-specification/pull/4535))
3032

3133
### Baggage
3234

specification/logs/data-model.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,8 @@ events. Larger numerical values in each range represent more important (more
303303
severe) events. For example `SeverityNumber=17` describes an error that is less
304304
critical than an error with `SeverityNumber=20`.
305305

306+
`SeverityNumber=0` MAY be used to represent an unspecified value.
307+
306308
#### Mapping of `SeverityNumber`
307309

308310
Mappings from existing logging systems and formats (or **source format** for

0 commit comments

Comments
 (0)