From 2a16d1d2303164618694361513f2ec1391d8f3e4 Mon Sep 17 00:00:00 2001 From: steven lunt Date: Wed, 24 Mar 2021 16:22:54 -0400 Subject: [PATCH] added spdlog::level::set_string_view to enable alternate log level names without changing the build via SPDLOG_LEVEL_NAMES --- include/spdlog/common-inl.h | 5 +++++ include/spdlog/common.h | 1 + tests/test_misc.cpp | 8 ++++++++ 3 files changed, 14 insertions(+) diff --git a/include/spdlog/common-inl.h b/include/spdlog/common-inl.h index eb79582c..fad18bd8 100644 --- a/include/spdlog/common-inl.h +++ b/include/spdlog/common-inl.h @@ -22,6 +22,11 @@ SPDLOG_INLINE const string_view_t &to_string_view(spdlog::level::level_enum l) S return level_string_views[l]; } +SPDLOG_INLINE void set_string_view(spdlog::level::level_enum l, const string_view_t &s) SPDLOG_NOEXCEPT +{ + level_string_views[l] = s; +} + SPDLOG_INLINE const char *to_short_c_str(spdlog::level::level_enum l) SPDLOG_NOEXCEPT { return short_level_names[l]; diff --git a/include/spdlog/common.h b/include/spdlog/common.h index 5e6acfd2..fb9a3660 100644 --- a/include/spdlog/common.h +++ b/include/spdlog/common.h @@ -167,6 +167,7 @@ enum level_enum #endif SPDLOG_API const string_view_t &to_string_view(spdlog::level::level_enum l) SPDLOG_NOEXCEPT; +SPDLOG_API void set_string_view(spdlog::level::level_enum l, const string_view_t &s) SPDLOG_NOEXCEPT; SPDLOG_API const char *to_short_c_str(spdlog::level::level_enum l) SPDLOG_NOEXCEPT; SPDLOG_API spdlog::level::level_enum from_str(const std::string &name) SPDLOG_NOEXCEPT; diff --git a/tests/test_misc.cpp b/tests/test_misc.cpp index 1d67e879..658fe068 100644 --- a/tests/test_misc.cpp +++ b/tests/test_misc.cpp @@ -55,6 +55,14 @@ TEST_CASE("level_to_string_view", "[convert_to_string_view") REQUIRE(spdlog::level::to_string_view(spdlog::level::off) == "off"); } +TEST_CASE("set_level_to_string_view", "[set_string_view") +{ + spdlog::level::set_string_view(spdlog::level::info, "INF"); + REQUIRE(spdlog::level::to_string_view(spdlog::level::info) == "INF"); + spdlog::level::set_string_view(spdlog::level::info, "info"); // set it back + REQUIRE(spdlog::level::to_string_view(spdlog::level::info) == "info"); +} + TEST_CASE("to_short_c_str", "[convert_to_short_c_str]") { REQUIRE(std::string(spdlog::level::to_short_c_str(spdlog::level::trace)) == "T");