From d953d323799ebef91ed57545fe8f7209be246e19 Mon Sep 17 00:00:00 2001 From: Alex E <36134278+chusitoo@users.noreply.github.com> Date: Thu, 4 Jul 2024 03:19:50 -0400 Subject: [PATCH] [BOOST LOG] Use correct type for severity logger (#460) --- instrumentation/boost_log/README.md | 16 +++++------ instrumentation/boost_log/example/main.cc | 3 +- .../instrumentation/boost_log/sink.h | 3 +- instrumentation/boost_log/src/sink.cc | 4 ++- instrumentation/boost_log/test/sink_test.cc | 28 ++++++++++--------- 5 files changed, 30 insertions(+), 24 deletions(-) diff --git a/instrumentation/boost_log/README.md b/instrumentation/boost_log/README.md index 804205ab3..afb66e0c1 100644 --- a/instrumentation/boost_log/README.md +++ b/instrumentation/boost_log/README.md @@ -33,14 +33,14 @@ boost::log::core::get()->add_sink(sink); This will create a backend with the following assumptions about the attributes it collects, more precisely: -| Keyword | Type | -|--------------|-----------------------------| -| Severity | int | -| TimeStamp | boost::posix_time::ptime | -| ThreadID | boost::log::aux::thread::id | -| FileName | std::string | -| FunctionName | std::string | -| LineNumber | int | +| Keyword | Type | +|--------------|-------------------------------------| +| Severity | boost::log::trivial::severity_level | +| TimeStamp | boost::posix_time::ptime | +| ThreadID | boost::log::aux::thread::id | +| FileName | std::string | +| FunctionName | std::string | +| LineNumber | int | If, however, one or more of these attributes have a different name or type, it is possible to communicate this to the backend via the `ValueMappers` struct. It contains a function for each attribute described above, with their signatures as follows: diff --git a/instrumentation/boost_log/example/main.cc b/instrumentation/boost_log/example/main.cc index 723f603d8..cfb66dbb5 100644 --- a/instrumentation/boost_log/example/main.cc +++ b/instrumentation/boost_log/example/main.cc @@ -5,6 +5,7 @@ #include #include +#include #include #include #include @@ -76,7 +77,7 @@ int main(int /* argc */, char ** /* argv */) boost::log::sources::logger simple; BOOST_LOG(simple) << "Test simplest message"; - boost::log::sources::severity_logger logger; + boost::log::sources::severity_logger logger; BOOST_LOG_SEV(logger, boost::log::trivial::info) << "Test message with severity"; BOOST_LOG_SEV(logger, boost::log::trivial::debug) diff --git a/instrumentation/boost_log/include/opentelemetry/instrumentation/boost_log/sink.h b/instrumentation/boost_log/include/opentelemetry/instrumentation/boost_log/sink.h index ce25aad05..6951dd157 100644 --- a/instrumentation/boost_log/include/opentelemetry/instrumentation/boost_log/sink.h +++ b/instrumentation/boost_log/include/opentelemetry/instrumentation/boost_log/sink.h @@ -57,7 +57,8 @@ class OpenTelemetrySinkBackend return kLibraryVersion; } - static inline opentelemetry::logs::Severity levelToSeverity(int level) noexcept + static inline opentelemetry::logs::Severity levelToSeverity( + boost::log::trivial::severity_level level) noexcept { using namespace boost::log::trivial; using opentelemetry::logs::Severity; diff --git a/instrumentation/boost_log/src/sink.cc b/instrumentation/boost_log/src/sink.cc index 42b4590df..e0b4dd936 100644 --- a/instrumentation/boost_log/src/sink.cc +++ b/instrumentation/boost_log/src/sink.cc @@ -68,7 +68,9 @@ OpenTelemetrySinkBackend::OpenTelemetrySinkBackend(const ValueMappers &mappers) { mappers_.ToSeverity = mappers.ToSeverity ? mappers.ToSeverity : [](const boost::log::record_view &record) { - return levelToSeverity(boost::log::extract_or_default(record["Severity"], -1)); + using boost::log::trivial::severity_level; + return levelToSeverity(boost::log::extract_or_default( + record["Severity"], static_cast(-1))); }; mappers_.ToTimeStamp = mappers.ToTimeStamp ? mappers.ToTimeStamp : ToTimestampDefault; mappers_.ToThreadId = mappers.ToThreadId ? mappers.ToThreadId : ToThreadIdDefault; diff --git a/instrumentation/boost_log/test/sink_test.cc b/instrumentation/boost_log/test/sink_test.cc index 43e68537c..797c9c3da 100644 --- a/instrumentation/boost_log/test/sink_test.cc +++ b/instrumentation/boost_log/test/sink_test.cc @@ -91,9 +91,11 @@ class OpenTelemetrySinkTest : public testing::Test TEST_F(OpenTelemetrySinkTest, LevelToSeverity) { - namespace Level = boost::log::trivial; + using Level = boost::log::trivial::severity_level; using logs_api::Severity; - using ots = instr::boost_log::OpenTelemetrySinkBackend; + using ots = instr::boost_log::OpenTelemetrySinkBackend; + const auto lowest = std::numeric_limits::lowest(); + const auto highest = std::numeric_limits::max(); ASSERT_TRUE(Severity::kFatal == ots::levelToSeverity(Level::fatal)); ASSERT_TRUE(Severity::kError == ots::levelToSeverity(Level::error)); @@ -101,13 +103,13 @@ TEST_F(OpenTelemetrySinkTest, LevelToSeverity) ASSERT_TRUE(Severity::kInfo == ots::levelToSeverity(Level::info)); ASSERT_TRUE(Severity::kDebug == ots::levelToSeverity(Level::debug)); ASSERT_TRUE(Severity::kTrace == ots::levelToSeverity(Level::trace)); - ASSERT_TRUE(Severity::kInvalid == ots::levelToSeverity(std::numeric_limits::lowest())); - ASSERT_TRUE(Severity::kInvalid == ots::levelToSeverity(std::numeric_limits::lowest() + 1)); - ASSERT_TRUE(Severity::kInvalid == ots::levelToSeverity(-42)); - ASSERT_TRUE(Severity::kTrace == ots::levelToSeverity(0)); - ASSERT_TRUE(Severity::kInvalid == ots::levelToSeverity(42)); - ASSERT_TRUE(Severity::kInvalid == ots::levelToSeverity(std::numeric_limits::max() - 1)); - ASSERT_TRUE(Severity::kInvalid == ots::levelToSeverity(std::numeric_limits::max())); + ASSERT_TRUE(Severity::kInvalid == ots::levelToSeverity(static_cast(lowest))); + ASSERT_TRUE(Severity::kInvalid == ots::levelToSeverity(static_cast(lowest + 1))); + ASSERT_TRUE(Severity::kInvalid == ots::levelToSeverity(static_cast(-42))); + ASSERT_TRUE(Severity::kTrace == ots::levelToSeverity(static_cast(0))); + ASSERT_TRUE(Severity::kInvalid == ots::levelToSeverity(static_cast(42))); + ASSERT_TRUE(Severity::kInvalid == ots::levelToSeverity(static_cast(highest - 1))); + ASSERT_TRUE(Severity::kInvalid == ots::levelToSeverity(static_cast(highest))); } TEST_F(OpenTelemetrySinkTest, Log_Success) @@ -119,7 +121,7 @@ TEST_F(OpenTelemetrySinkTest, Log_Success) auto logrecord_mock = new LogRecordMock(); auto logrecord_ptr = nostd::unique_ptr(logrecord_mock); - boost::log::sources::severity_logger logger; + boost::log::sources::severity_logger logger; auto pre_log = std::chrono::system_clock::now(); EXPECT_CALL(*provider_mock, GetLogger(_, _, _, _, _)) @@ -182,7 +184,7 @@ TEST_F(OpenTelemetrySinkTest, Log_Failure) logs_api::Provider::SetLoggerProvider(nostd::shared_ptr(provider_mock)); auto logger_mock = new LoggerMock(); auto logger_ptr = nostd::shared_ptr(logger_mock); - boost::log::sources::severity_logger logger; + boost::log::sources::severity_logger logger; EXPECT_CALL(*provider_mock, GetLogger(_, _, _, _, _)) .WillOnce(DoAll(Invoke([](nostd::string_view logger_name, nostd::string_view library_name, @@ -263,7 +265,7 @@ TEST_F(OpenTelemetrySinkTest, Multi_Threaded) std::vector threads; threads.reserve(count); - boost::log::sources::severity_logger logger; + boost::log::sources::severity_logger logger; const auto pre_log = std::chrono::system_clock::now().time_since_epoch().count(); for (size_t index = 0; index < count; ++index) @@ -360,7 +362,7 @@ TEST(OpenTelemetrySinkTestSuite, CustomMappers) auto logrecord_ptr = nostd::unique_ptr(logrecord_mock); SetUpBackendWithDummyMappers(); - boost::log::sources::severity_logger logger; + boost::log::sources::severity_logger logger; EXPECT_CALL(*provider_mock, GetLogger(_, _, _, _, _)) .WillOnce(DoAll(Invoke([](nostd::string_view logger_name, nostd::string_view library_name,