Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 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
19 changes: 0 additions & 19 deletions api/include/opentelemetry/logs/noop.h
Original file line number Diff line number Diff line change
Expand Up @@ -91,17 +91,6 @@ 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

class NoopEventLogger final : public EventLogger
Comment thread
marcalff marked this conversation as resolved.
{
public:
Expand Down Expand Up @@ -138,14 +127,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
45 changes: 4 additions & 41 deletions api/include/opentelemetry/logs/provider.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,45 +48,28 @@ 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
static nostd::shared_ptr<EventLoggerProvider> GetEventLoggerProvider() noexcept
{
std::lock_guard<common::SpinLockMutex> guard(GetLock());
return nostd::shared_ptr<EventLoggerProvider>(GetEventProvider());
}

/**
* Changes the singleton EventLoggerProvider.
* @deprecated
*/
OPENTELEMETRY_DEPRECATED static void SetEventLoggerProvider(
const nostd::shared_ptr<EventLoggerProvider> &tp) noexcept
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 +80,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
21 changes: 0 additions & 21 deletions examples/common/logs_foo_library/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,24 +12,3 @@ target_include_directories(common_logs_foo_library
PUBLIC $<BUILD_INTERFACE:${EXAMPLES_COMMON_DIR}>)

target_link_libraries(common_logs_foo_library PUBLIC opentelemetry-cpp::api)

Comment thread
marcalff marked this conversation as resolved.
# Internal deprecated API calling should not failed the build in maintainer mode
if(OTELCPP_MAINTAINER_MODE)
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|AppleClang")
get_target_property(COMMON_LOGS_FOO_COMPILE_OPTS common_logs_foo_library
COMPILE_OPTIONS)
list(REMOVE_ITEM COMMON_LOGS_FOO_COMPILE_OPTS
-Wno-error=deprecated-declarations)
set_target_properties(
common_logs_foo_library PROPERTIES COMPILE_OPTIONS
"${COMMON_LOGS_FOO_COMPILE_OPTS}")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
get_target_property(COMMON_LOGS_FOO_COMPILE_OPTS common_logs_foo_library
COMPILE_OPTIONS)
list(REMOVE_ITEM COMMON_LOGS_FOO_COMPILE_OPTS /wd4996)
list(APPEND COMMON_LOGS_FOO_COMPILE_OPTS /w34996)
set_target_properties(
common_logs_foo_library PROPERTIES COMPILE_OPTIONS
"${COMMON_LOGS_FOO_COMPILE_OPTS}")
endif()
endif()
3 changes: 2 additions & 1 deletion sdk/include/opentelemetry/sdk/logs/event_logger.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,14 @@ namespace sdk
namespace logs
{
#if OPENTELEMETRY_ABI_VERSION_NO < 2
class OPENTELEMETRY_DEPRECATED EventLogger final : public opentelemetry::logs::EventLogger
class EventLogger final : public opentelemetry::logs::EventLogger
{
public:
/**
* Initialize a new Eventlogger.
* @param delegate_logger The delegate logger instance
* @param event_domain Event domain
* @deprecated
Comment thread
marcalff marked this conversation as resolved.
Outdated
*/
explicit EventLogger(nostd::shared_ptr<opentelemetry::logs::Logger> delegate_logger,
nostd::string_view event_domain) noexcept;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ namespace sdk
namespace logs
{
#if OPENTELEMETRY_ABI_VERSION_NO < 2
class OPENTELEMETRY_EXPORT OPENTELEMETRY_DEPRECATED EventLoggerProvider final
class OPENTELEMETRY_EXPORT EventLoggerProvider final
Comment thread
marcalff marked this conversation as resolved.
: public opentelemetry::logs::EventLoggerProvider
{
public:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,16 @@ namespace logs
#if OPENTELEMETRY_ABI_VERSION_NO < 2
/**
* Factory class for EventLoggerProvider.
* @deprecated
*/
class OPENTELEMETRY_DEPRECATED EventLoggerProviderFactory
class EventLoggerProviderFactory
{
public:
/**
* Create a EventLoggerProvider.
*/

OPENTELEMETRY_DEPRECATED static std::unique_ptr<opentelemetry::sdk::logs::EventLoggerProvider>
Create();
static std::unique_ptr<opentelemetry::sdk::logs::EventLoggerProvider> Create();
};
#endif

Expand Down
Loading