Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,18 @@ Increment the:

## [Unreleased]

* [BUILD] Revisit EventLogger deprecation
[#3855](https://github.com/open-telemetry/opentelemetry-cpp/pull/3855)

Important changes:

* [BUILD] Revisit EventLogger deprecation
[#3855](https://github.com/open-telemetry/opentelemetry-cpp/pull/3855)

* File `DEPRECATED.md` contains information about current deprecation
plans.
* Please adjust your application accordingly, to avoid disruption.

## [1.25 2026-02-07]

* [RELEASE] Bump main branch to 1.25.0-dev (#3759)
Expand Down
82 changes: 81 additions & 1 deletion DEPRECATED.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,87 @@ N/A

## [opentelemetry-cpp API]

N/A
### Deprecation of EventLogger

#### Announcement (EventLogger)

The `EventLogger` API was deprecated by:

* [API] Deprecate event logger
[#3285](https://github.com/open-telemetry/opentelemetry-cpp/pull/3285)

on Feb 25, 2025, as published in release 1.20.

#### Motivation (EventLogger)

The specification for `EventLogger` was deprecated by:

* Deprecate Event API and SDK in favor of Emit Event in the Log API
[#4319](https://github.com/open-telemetry/opentelemetry-specification/pull/4319)

The opentelemetry-cpp API and SDK deprecates the EventLogger to be aligned
with the opentelemetry specification.

#### Scope (EventLogger)

The following classes or methods are deprecated in ABI version 1:

* API
* class opentelemetry::logs::EventLogger
* class opentelemetry::logs::EventLoggerProvider
* class opentelemetry::logs::NoopEventLogger
* class opentelemetry::logs::NoopEventLoggerProvider
* method opentelemetry::logs::Provider::GetEventLoggerProvider()
* method opentelemetry::logs::Provider::SetEventLoggerProvider()
* SDK
* class opentelemetry::sdk::logs::EventLogger
* class opentelemetry::sdk::logs::EventLoggerProvider
* class opentelemetry::sdk::logs::EventLoggerProviderFactory

The same are removed from ABI version 2.

#### Mitigation (EventLogger)

In respective order, the following should be used in place of `EventLogger`:

* API
* class opentelemetry::logs::Logger
* class opentelemetry::logs::LoggerProvider
* class opentelemetry::logs::NoopLogger
* class opentelemetry::logs::NoopLoggerProvider
* method opentelemetry::logs::Provider::GetLoggerProvider()
* method opentelemetry::logs::Provider::SetLoggerProvider()
* SDK
* class opentelemetry::sdk::logs::Logger
* class opentelemetry::sdk::logs::LoggerProvider
* class opentelemetry::sdk::logs::LoggerProviderFactory

Instrumented applications, that currently use
`opentelemetry::logs::Provider::GetEventLoggerProvider()`,
are strongly encouraged to migrate and use
`opentelemetry::logs::Provider::GetLoggerProvider()` instead.

Main applications, when installing and configuring an SDK, that currently use
`opentelemetry::logs::Provider::SetEventLoggerProvider()`,
are strongly encouraged to migrate and use
`opentelemetry::logs::Provider::SetLoggerProvider()` instead.

This migration can be implemented now,
as `Logger` is available already in ABI version 1.

This migration is mandatory and a pre requisite for adoption of ABI version 2 later.

#### Planned removal (EventLogger)

All the deprecated code is already removed from ABI version 2, since Feb
2025.

While EventLogger will not be removed from ABI version 1,
the ABI version 1 itself will be deprecated and decommissioned in the long
term, after ABI version 2 is declared stable.

By the time only ABI version 2 is available and supported,
any code still using the deprecated `EventLogger` will break.

## [opentelemetry-cpp SDK]

Expand Down
22 changes: 2 additions & 20 deletions api/include/opentelemetry/logs/event_logger.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,21 +15,11 @@ OPENTELEMETRY_BEGIN_NAMESPACE
namespace logs
{
#if OPENTELEMETRY_ABI_VERSION_NO < 2
# if defined(_MSC_VER)
# pragma warning(push)
# pragma warning(disable : 4996)
# elif defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__)
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wdeprecated-declarations"
# elif defined(__clang__) || defined(__apple_build_version__)
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wdeprecated-declarations"
# endif

/**
* Handles event log record creation.
* @deprecated
**/
class OPENTELEMETRY_DEPRECATED EventLogger
class EventLogger
{
public:
virtual ~EventLogger() = default;
Expand Down Expand Up @@ -88,14 +78,6 @@ class OPENTELEMETRY_DEPRECATED EventLogger
void IgnoreTraitResult(ValueType &&...)
{}
};

# if defined(_MSC_VER)
# pragma warning(pop)
# elif defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__)
# pragma GCC diagnostic pop
# elif defined(__clang__) || defined(__apple_build_version__)
# pragma clang diagnostic pop
# endif
#endif
} // namespace logs
OPENTELEMETRY_END_NAMESPACE
22 changes: 2 additions & 20 deletions api/include/opentelemetry/logs/event_logger_provider.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,21 +15,11 @@ class EventLogger;
class Logger;

#if OPENTELEMETRY_ABI_VERSION_NO < 2
# if defined(_MSC_VER)
# pragma warning(push)
# pragma warning(disable : 4996)
# elif defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__)
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wdeprecated-declarations"
# elif defined(__clang__) || defined(__apple_build_version__)
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wdeprecated-declarations"
# endif

/**
* Creates new EventLogger instances.
* @deprecated
*/
class OPENTELEMETRY_DEPRECATED EventLoggerProvider
class EventLoggerProvider
{
public:
virtual ~EventLoggerProvider() = default;
Expand All @@ -43,14 +33,6 @@ class OPENTELEMETRY_DEPRECATED EventLoggerProvider
nostd::shared_ptr<Logger> delegate_logger,
nostd::string_view event_domain) noexcept = 0;
};

# if defined(_MSC_VER)
# pragma warning(pop)
# elif defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__)
# pragma GCC diagnostic pop
# elif defined(__clang__) || defined(__apple_build_version__)
# pragma clang diagnostic pop
# endif
#endif
} // namespace logs
OPENTELEMETRY_END_NAMESPACE
24 changes: 5 additions & 19 deletions api/include/opentelemetry/logs/noop.h
Original file line number Diff line number Diff line change
Expand Up @@ -91,17 +91,10 @@ class NoopLoggerProvider final : public LoggerProvider
};

#if OPENTELEMETRY_ABI_VERSION_NO < 2
# if defined(_MSC_VER)
# pragma warning(push)
# pragma warning(disable : 4996)
# elif defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__)
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wdeprecated-declarations"
# elif defined(__clang__) || defined(__apple_build_version__)
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wdeprecated-declarations"
# endif

/**
* No-op implementation of a EventLogger.
* @deprecated
*/
class NoopEventLogger final : public EventLogger
{
public:
Expand All @@ -120,6 +113,7 @@ class NoopEventLogger final : public EventLogger

/**
* No-op implementation of a EventLoggerProvider.
* @deprecated
*/
class NoopEventLoggerProvider final : public EventLoggerProvider
{
Expand All @@ -138,14 +132,6 @@ class NoopEventLoggerProvider final : public EventLoggerProvider
private:
nostd::shared_ptr<EventLogger> event_logger_;
};

# if defined(_MSC_VER)
# pragma warning(pop)
# elif defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__)
# pragma GCC diagnostic pop
# elif defined(__clang__) || defined(__apple_build_version__)
# pragma clang diagnostic pop
# endif
#endif

} // namespace logs
Expand Down
39 changes: 2 additions & 37 deletions api/include/opentelemetry/logs/provider.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,21 +48,12 @@ class OPENTELEMETRY_EXPORT Provider
}

#if OPENTELEMETRY_ABI_VERSION_NO < 2
# if defined(_MSC_VER)
# pragma warning(push)
# pragma warning(disable : 4996)
# elif defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__)
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wdeprecated-declarations"
# elif defined(__clang__) || defined(__apple_build_version__)
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wdeprecated-declarations"
# endif
/**
* Returns the singleton EventLoggerProvider.
*
* By default, a no-op EventLoggerProvider is returned. This will never return a
* nullptr EventLoggerProvider.
* @deprecated
*/
OPENTELEMETRY_DEPRECATED static nostd::shared_ptr<EventLoggerProvider>
GetEventLoggerProvider() noexcept
Expand All @@ -73,20 +64,14 @@ class OPENTELEMETRY_EXPORT Provider

/**
* Changes the singleton EventLoggerProvider.
* @deprecated
*/
OPENTELEMETRY_DEPRECATED static void SetEventLoggerProvider(
const nostd::shared_ptr<EventLoggerProvider> &tp) noexcept
{
std::lock_guard<common::SpinLockMutex> guard(GetLock());
GetEventProvider() = tp;
}
# if defined(_MSC_VER)
# pragma warning(pop)
# elif defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__)
# pragma GCC diagnostic pop
# elif defined(__clang__) || defined(__apple_build_version__)
# pragma clang diagnostic pop
# endif
#endif

private:
Expand All @@ -97,32 +82,12 @@ class OPENTELEMETRY_EXPORT Provider
}

#if OPENTELEMETRY_ABI_VERSION_NO < 2
# if defined(_MSC_VER)
# pragma warning(push)
# pragma warning(disable : 4996)
# elif defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__)
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wdeprecated-declarations"
# elif defined(__clang__) || defined(__apple_build_version__)
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wdeprecated-declarations"
# endif

OPENTELEMETRY_DEPRECATED
OPENTELEMETRY_API_SINGLETON static nostd::shared_ptr<EventLoggerProvider> &
GetEventProvider() noexcept
{
static nostd::shared_ptr<EventLoggerProvider> provider(new NoopEventLoggerProvider);
return provider;
}

# if defined(_MSC_VER)
# pragma warning(pop)
# elif defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__)
# pragma GCC diagnostic pop
# elif defined(__clang__) || defined(__apple_build_version__)
# pragma clang diagnostic pop
# endif
#endif

OPENTELEMETRY_API_SINGLETON static common::SpinLockMutex &GetLock() noexcept
Expand Down
26 changes: 26 additions & 0 deletions api/test/logs/logger_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,23 @@ TEST(Logger, LogMethodOverloads)
}

#if OPENTELEMETRY_ABI_VERSION_NO < 2

/*
* opentelemetry::logs::Provider::GetLoggerProvider() is deprecated.
* Suppress warnings in tests, to have a clean build and coverage.
*/

# if defined(_MSC_VER)
# pragma warning(push)
# pragma warning(disable : 4996)
# elif defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__)
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wdeprecated-declarations"
# elif defined(__clang__) || defined(__apple_build_version__)
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wdeprecated-declarations"
# endif

TEST(Logger, EventLogMethodOverloads)
{
auto lp = Provider::GetLoggerProvider();
Expand Down Expand Up @@ -192,6 +209,15 @@ TEST(Logger, EventLogMethodOverloads)
event_logger->EmitEvent("event name", Severity::kDebug,
opentelemetry::common::MakeAttributes(vec));
}

# if defined(_MSC_VER)
# pragma warning(pop)
# elif defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__)
# pragma GCC diagnostic pop
# elif defined(__clang__) || defined(__apple_build_version__)
# pragma clang diagnostic pop
# endif

#endif

// Define a basic Logger class
Expand Down
27 changes: 27 additions & 0 deletions api/test/logs/provider_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,24 @@ TEST(Provider, GetLogger)
}

#if OPENTELEMETRY_ABI_VERSION_NO < 2

/*
* opentelemetry::logs::Provider::GetEventLoggerProvider() is deprecated.
* opentelemetry::logs::Provider::SetEventLoggerProvider() is deprecated.
* Suppress warnings in tests, to have a clean build and coverage.
*/

# if defined(_MSC_VER)
# pragma warning(push)
# pragma warning(disable : 4996)
# elif defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__)
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wdeprecated-declarations"
# elif defined(__clang__) || defined(__apple_build_version__)
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wdeprecated-declarations"
# endif

class TestEventLoggerProvider : public EventLoggerProvider
{
public:
Expand Down Expand Up @@ -115,4 +133,13 @@ TEST(Provider, CreateEventLogger)

EXPECT_EQ(nullptr, logger);
}

# if defined(_MSC_VER)
# pragma warning(pop)
# elif defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__)
# pragma GCC diagnostic pop
# elif defined(__clang__) || defined(__apple_build_version__)
# pragma clang diagnostic pop
# endif

#endif
Loading
Loading