Skip to content

Unavoidable EventLogger Deprecated Warning #3588

@ln-hei

Description

@ln-hei

Describe your environment

  • Library: opentelemetry-cpp
  • Version: 1.21.0
  • Component: OTLP Logger
  • Compiler: Microsoft Visual C++
  • Build Environment: Using strict compiler flags that treat warnings as errors.

Steps to reproduce

  • Set up a project using opentelemetry-cpp v1.21.0.
  • Create a C++ source file that includes the logger provider header, following the official example code.
#include "opentelemetry/logs/provider.h"

int main()
{
  // The warning is triggered by the include directive alone.
  return 0;
}
  • Compile the code.

What is the expected behavior?

The code should compile cleanly without any warnings, as no deprecated functionality is being explicitly used.

What is the actual behavior?

Including the <opentelemetry/logs/provider.h> header file results in a compiler warning, even if no deprecated symbols are used in the code.

The specific warning is:

warning C4996: 'opentelemetry::v1::logs::EventLogger::~EventLogger': was declared deprecated

Additional context

This issue is problematic in environments where compiler warnings are treated as errors, causing the build to fail. A temporary workaround is to use macros to suppress the C4996 warning around the include directive, but a permanent fix is needed.

The full error log is:

C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1190,9): warning C4996: 'opentelemetry::v1::logs::EventLogger::~EventLogger': was declared deprecated
1>(compiling source file '[...]/OpenTelemetryLogger.cpp')
1>    C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1190,9):
1>    the template instantiation context (the oldest one first) is
1>        [...]\opentelemetry-cpp-1.21.0\msvc\include\opentelemetry\logs\noop.h(126,34):
1>        see reference to class template instantiation 'opentelemetry::v1::nostd::shared_ptr<opentelemetry::v1::logs::EventLogger>' being compiled
1>        [...]\opentelemetry-cpp-1.21.0\msvc\include\opentelemetry\nostd\shared_ptr.h(84,3):
1>        while compiling class template member function 'opentelemetry::v1::nostd::shared_ptr<opentelemetry::v1::logs::EventLogger>::shared_ptr(opentelemetry::v1::logs::EventLogger *)'
1>            [...]\opentelemetry-cpp-1.21.0\msvc\include\opentelemetry\logs\noop.h(115,75):
1>            see the first reference to 'opentelemetry::v1::nostd::shared_ptr<opentelemetry::v1::logs::EventLogger>::shared_ptr' in 'opentelemetry::v1::logs::NoopEventLoggerProvider::NoopEventLoggerProvider'
1>        [...]\opentelemetry-cpp-1.21.0\msvc\include\opentelemetry\nostd\shared_ptr.h(86,28):
1>        see reference to function template instantiation 'std::shared_ptr<T>::shared_ptr<opentelemetry::v1::logs::EventLogger,0>(_Ux *)' being compiled
1>        with
1>        [
1>            T=opentelemetry::v1::logs::EventLogger,
1>            _Ux=opentelemetry::v1::logs::EventLogger
1>        ]
1>        C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1584,61):
1>        see reference to class template instantiation 'std::_Ref_count<opentelemetry::v1::logs::EventLogger>' being compiled
1>        C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1189,10):
1>        while compiling class template member function 'void std::_Ref_count<opentelemetry::v1::logs::EventLogger>::_Destroy(void) noexcept'
1>C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1525,9): warning C4996: 'opentelemetry::v1::logs::EventLogger::~EventLogger': was declared deprecated
1>(compiling source file '[...]/OpenTelemetryLogger.cpp')
1>    C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1525,9):
1>    the template instantiation context (the oldest one first) is
1>        C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1583,35):
1>        see reference to class template instantiation 'std::_Temporary_owner<opentelemetry::v1::logs::EventLogger>' being compiled
1>        C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1524,6):
1>        while compiling class template member function 'std::_Temporary_owner<opentelemetry::v1::logs::EventLogger>::~_Temporary_owner(void)'
1>            C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1583,41):
1>            see the first reference to 'std::_Temporary_owner<opentelemetry::v1::logs::EventLogger>::~_Temporary_owner' in 'std::shared_ptr<T>::shared_ptr'
1>        with
1>        [
1>            T=opentelemetry::v1::logs::EventLogger
1>        ]
1>            [...]\opentelemetry-cpp-1.21.0\msvc\include\opentelemetry\nostd\shared_ptr.h(86,28):
1>            see the first reference to 'std::shared_ptr<T>::shared_ptr' in 'opentelemetry::v1::nostd::shared_ptr<opentelemetry::v1::logs::EventLogger>::shared_ptr'
1>        with
1>        [
1>            T=opentelemetry::v1::logs::EventLogger
1>        ]
1>            [...]\opentelemetry-cpp-1.21.0\msvc\include\opentelemetry\logs\noop.h(115,75):
1>            see the first reference to 'opentelemetry::v1::nostd::shared_ptr<opentelemetry::v1::logs::EventLogger>::shared_ptr' in 'opentelemetry::v1::logs::NoopEventLoggerProvider::NoopEventLoggerProvider'
1>C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1190,9): warning C4996: 'opentelemetry::v1::logs::EventLoggerProvider::~EventLoggerProvider': was declared deprecated
1>(compiling source file '[...]/OpenTelemetryLogger.cpp')
1>    C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1190,9):
1>    the template instantiation context (the oldest one first) is
1>        [...]\opentelemetry-cpp-1.21.0\msvc\include\opentelemetry\logs\provider.h(58,3):
1>        see reference to class template instantiation 'opentelemetry::v1::nostd::shared_ptr<opentelemetry::v1::logs::EventLoggerProvider>' being compiled
1>        [...]\opentelemetry-cpp-1.21.0\msvc\include\opentelemetry\nostd\shared_ptr.h(84,3):
1>        while compiling class template member function 'opentelemetry::v1::nostd::shared_ptr<opentelemetry::v1::logs::EventLoggerProvider>::shared_ptr(opentelemetry::v1::logs::EventLoggerProvider *)'
1>            [...]\opentelemetry-cpp-1.21.0\msvc\include\opentelemetry\logs\provider.h(87,59):
1>            see the first reference to 'opentelemetry::v1::nostd::shared_ptr<opentelemetry::v1::logs::EventLoggerProvider>::shared_ptr' in 'opentelemetry::v1::logs::Provider::GetEventProvider'
1>        [...]\opentelemetry-cpp-1.21.0\msvc\include\opentelemetry\nostd\shared_ptr.h(86,28):
1>        see reference to function template instantiation 'std::shared_ptr<T>::shared_ptr<opentelemetry::v1::logs::EventLoggerProvider,0>(_Ux *)' being compiled
1>        with
1>        [
1>            T=opentelemetry::v1::logs::EventLoggerProvider,
1>            _Ux=opentelemetry::v1::logs::EventLoggerProvider
1>        ]
1>        C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1584,61):
1>        see reference to class template instantiation 'std::_Ref_count<opentelemetry::v1::logs::EventLoggerProvider>' being compiled
1>        C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1189,10):
1>        while compiling class template member function 'void std::_Ref_count<opentelemetry::v1::logs::EventLoggerProvider>::_Destroy(void) noexcept'
1>C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1525,9): warning C4996: 'opentelemetry::v1::logs::EventLoggerProvider::~EventLoggerProvider': was declared deprecated
1>(compiling source file '[...]/OpenTelemetryLogger.cpp')
1>    C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1525,9):
1>    the template instantiation context (the oldest one first) is
1>        C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1583,35):
1>        see reference to class template instantiation 'std::_Temporary_owner<opentelemetry::v1::logs::EventLoggerProvider>' being compiled
1>        C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1524,6):
1>        while compiling class template member function 'std::_Temporary_owner<opentelemetry::v1::logs::EventLoggerProvider>::~_Temporary_owner(void)'
1>            C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\include\memory(1583,41):
1>            see the first reference to 'std::_Temporary_owner<opentelemetry::v1::logs::EventLoggerProvider>::~_Temporary_owner' in 'std::shared_ptr<T>::shared_ptr'
1>        with
1>        [
1>            T=opentelemetry::v1::logs::EventLoggerProvider
1>        ]
1>            [...]\opentelemetry-cpp-1.21.0\msvc\include\opentelemetry\nostd\shared_ptr.h(86,28):
1>            see the first reference to 'std::shared_ptr<T>::shared_ptr' in 'opentelemetry::v1::nostd::shared_ptr<opentelemetry::v1::logs::EventLoggerProvider>::shared_ptr'
1>        with
1>        [
1>            T=opentelemetry::v1::logs::EventLoggerProvider
1>        ]
1>            [...]\opentelemetry-cpp-1.21.0\msvc\include\opentelemetry\logs\provider.h(87,59):
1>            see the first reference to 'opentelemetry::v1::nostd::shared_ptr<opentelemetry::v1::logs::EventLoggerProvider>::shared_ptr' in 'opentelemetry::v1::logs::Provider::GetEventProvider'

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingtriage/acceptedIndicates an issue or PR is ready to be actively worked on.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions