open-telemetry / opentelemetry-cpp

The OpenTelemetry C++ Client
https://opentelemetry.io/
Apache License 2.0
815 stars 391 forks source link

[API] Support for Logger::Enabled() is incomplete #2667

Open marcalff opened 1 month ago

marcalff commented 1 month ago
  nostd::shared_ptr<opentelemetry::logs::Logger> logger = ...;

  if (logger->Enabled(severity)) {
  }

Logger::Enabled() always return false.

This is due to:

  inline bool Enabled(Severity severity) const noexcept
  {
    return static_cast<uint8_t>(severity) >= OPENTELEMETRY_ATOMIC_READ_8(&minimum_severity_);
  }

  mutable uint8_t minimum_severity_{kMaxSeverity};

The severity is kMaxSeverity by default, meaning all events are disabled by default.

There is a method to change the logger severity:

  void SetMinimumSeverity(uint8_t severity_or_max) noexcept
  {
    OPENTELEMETRY_ATOMIC_WRITE_8(&minimum_severity_, severity_or_max);
  }

but is it protected, and never called in the code base.

Any user code that checks for Enabled() can not emit logs.

Note that EmitLogRecord() helpers never honor the Enabled() flag either.

marcalff commented 1 month ago

To revisit once spec is merged:

marcalff commented 1 month ago

Spec is now merged.

Adding a Enabled() method in the API is an ABI breaking change, to implement in ABI_VERSION_2 only.

marcalff commented 1 month ago

See related: