From 0f83b33d4f05f0fb6c707c77c032aeed94951e0f Mon Sep 17 00:00:00 2001 From: gabime Date: Sat, 10 Jul 2021 13:48:06 +0300 Subject: [PATCH] backward compatibility with fmt version < 8 --- bench/async_bench.cpp | 13 ++++++------- include/spdlog/common.h | 10 ++++++++-- include/spdlog/logger.h | 2 +- include/spdlog/sinks/daily_file_sink.h | 2 +- 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/bench/async_bench.cpp b/bench/async_bench.cpp index c9e2211f..99d8ecb2 100644 --- a/bench/async_bench.cpp +++ b/bench/async_bench.cpp @@ -103,12 +103,11 @@ int main(int argc, char *argv[]) auto slot_size = sizeof(spdlog::details::async_msg); spdlog::info("-------------------------------------------------"); - spdlog::info(fmt::format(std::locale("en_US.UTF-8"), "Messages : {:L}", howmany)); - spdlog::info(fmt::format(std::locale("en_US.UTF-8"), "Threads : {:L}", threads)); - spdlog::info(fmt::format(std::locale("en_US.UTF-8"), "Queue : {:L} slots", queue_size)); - spdlog::info(fmt::format( - std::locale("en_US.UTF-8"), "Queue memory : {:L} x {:L} = {:L} KB ", queue_size, slot_size, (queue_size * slot_size) / 1024)); - spdlog::info(fmt::format(std::locale("en_US.UTF-8"), "Total iters : {:L}", iters)); + spdlog::info("Messages : {:L}", howmany); + spdlog::info("Threads : {:L}", threads); + spdlog::info("Queue : {:L} slots", queue_size); + spdlog::info("Queue memory : {:L} x {:L} = {:L} KB ", queue_size, slot_size, (queue_size * slot_size) / 1024); + spdlog::info("Total iters : {:L}", iters); spdlog::info("-------------------------------------------------"); const char *filename = "logs/basic_async.log"; @@ -181,5 +180,5 @@ void bench_mt(int howmany, std::shared_ptr logger, int thread_co auto delta = high_resolution_clock::now() - start; auto delta_d = duration_cast>(delta).count(); - spdlog::info(fmt::format(std::locale("en_US.UTF-8"), "Elapsed: {} secs\t {:L}/sec", delta_d, int(howmany / delta_d))); + spdlog::info("Elapsed: {} secs\t {:L}/sec", delta_d, int(howmany / delta_d)); } diff --git a/include/spdlog/common.h b/include/spdlog/common.h index 1f289da9..d6434893 100644 --- a/include/spdlog/common.h +++ b/include/spdlog/common.h @@ -35,8 +35,14 @@ #include -#if defined(SPDLOG_WCHAR_FILENAMES) || defined(SPDLOG_WCHAR_TO_UTF8_SUPPORT) -# include +// backward compatibility with fmt versions older than 8 +#if FMT_VERSION >= 80000 +# define SPDLOG_FMT_RUNTIME(format_string) fmt::runtime(format_string) +# if defined(SPDLOG_WCHAR_FILENAMES) || defined(SPDLOG_WCHAR_TO_UTF8_SUPPORT) +# include +# endif +#else +# define SPDLOG_FMT_RUNTIME(format_string) format_string #endif // visual studio upto 2013 does not support noexcept nor constexpr diff --git a/include/spdlog/logger.h b/include/spdlog/logger.h index 452b1a6b..b52eda9e 100644 --- a/include/spdlog/logger.h +++ b/include/spdlog/logger.h @@ -341,7 +341,7 @@ protected: SPDLOG_TRY { memory_buf_t buf; - fmt::format_to(std::back_inserter(buf), fmt::runtime(fmt), std::forward(args)...); + fmt::format_to(std::back_inserter(buf), SPDLOG_FMT_RUNTIME(fmt), std::forward(args)...); details::log_msg log_msg(loc, name_, lvl, string_view_t(buf.data(), buf.size())); log_it_(log_msg, log_enabled, traceback_enabled); } diff --git a/include/spdlog/sinks/daily_file_sink.h b/include/spdlog/sinks/daily_file_sink.h index 4b9062d5..d6a09f6b 100644 --- a/include/spdlog/sinks/daily_file_sink.h +++ b/include/spdlog/sinks/daily_file_sink.h @@ -53,7 +53,7 @@ struct daily_filename_format_calculator #if defined(_MSC_VER) && defined(SPDLOG_WCHAR_FILENAMES) // for some reason msvc doesnt allow fmt::runtime(..) with wchar here return fmt::format(fmt_filename, now_tm); #else - return fmt::format(fmt::runtime(fmt_filename), now_tm); + return fmt::format(SPDLOG_FMT_RUNTIME(fmt_filename), now_tm); #endif } };