From 5056437ca18907e408be5203674c71753b8ab0f7 Mon Sep 17 00:00:00 2001 From: gabime Date: Sat, 23 Mar 2019 20:06:49 +0200 Subject: [PATCH] support for const char* messages --- lite/spdlite.cpp | 13 +++++++++--- lite/spdlite.h | 51 ++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 59 insertions(+), 5 deletions(-) diff --git a/lite/spdlite.cpp b/lite/spdlite.cpp index 53f98fe9..1e32a570 100644 --- a/lite/spdlite.cpp +++ b/lite/spdlite.cpp @@ -24,7 +24,6 @@ bool spdlog::lite::logger::should_log(spdlog::lite::level level) const SPDLOG_NO } - void spdlog::lite::logger::log_formatted_(const spdlog::lite::src_loc &src, spdlog::lite::level lvl, const fmt::memory_buffer &formatted) { auto spd_level = to_spdlog_level(lvl); @@ -32,11 +31,19 @@ void spdlog::lite::logger::log_formatted_(const spdlog::lite::src_loc &src, spdl impl_->log(source_loc, spd_level, spdlog::details::fmt_helper::to_string_view(formatted)); } -void spdlog::lite::logger::log_formatted_(spdlog::lite::level level, const fmt::memory_buffer &formatted) +void spdlog::lite::logger::log_string_view_(const spdlog::lite::src_loc &src, spdlog::lite::level lvl, const string_view_t &sv) { - log_formatted_(src_loc{}, level, formatted); + auto spd_level = to_spdlog_level(lvl); + spdlog::source_loc source_loc{src.filename, src.line, src.funcname}; + impl_->log(source_loc, spd_level, sv); } +void spdlog::lite::logger::log_string_view_(spdlog::lite::level lvl, const string_view_t &sv) +{ + log_string_view_(spdlog::lite::src_loc{}, lvl, sv); +} + + void spdlog::lite::logger::set_level(spdlog::lite::level level) { auto spd_level = to_spdlog_level(level); diff --git a/lite/spdlite.h b/lite/spdlite.h index c1ec48ba..f596cf31 100644 --- a/lite/spdlite.h +++ b/lite/spdlite.h @@ -77,10 +77,22 @@ #define SPDLITE_CRITICAL(...) (void)0 #endif + + + + namespace spdlog { class logger; namespace lite { + +// string_view type - either std::string_view or fmt::string_view (pre c++17) +#if defined(FMT_USE_STD_STRING_VIEW) + using string_view_t = std::string_view; +#else + using string_view_t = fmt::string_view; +#endif + enum class level { trace = SPDLITE_LEVEL_TRACE, @@ -135,42 +147,74 @@ public: log(spdlog::lite::src_loc{}, lvl, fmt, args...); } + template void trace(const char *fmt, const Args &... args) { log(spdlog::lite::level::trace, fmt, args...); } - + void trace(const char* msg) + { + log_string_view_(spdlog::lite::level::trace, msg); + } + + template void debug(const char *fmt, const Args &... args) { log(spdlog::lite::level::debug, fmt, args...); } + void debug(const char* msg) + { + log_string_view_(spdlog::lite::level::debug, msg); + } + template void info(const char *fmt, const Args &... args) { log(spdlog::lite::level::info, fmt, args...); } + void info(const char* msg) + { + log_string_view_(spdlog::lite::level::info, msg); + } + + template void warn(const char *fmt, const Args &... args) { log(spdlog::lite::level::warn, fmt, args...); } + void warn(const char* msg) + { + log_string_view_(spdlog::lite::level::warn, msg); + } + template void error(const char *fmt, const Args &... args) { log(spdlog::lite::level::err, fmt, args...); } + void error(const char* msg) + { + log_string_view_(spdlog::lite::level::err, msg); + } + template void critical(const char *fmt, const Args &... args) { log(spdlog::lite::level::critical, fmt, args...); } + void critical(const char* msg) + { + log_string_view_(spdlog::lite::level::critical, msg); + } + std::string name() const; @@ -188,8 +232,10 @@ public: protected: std::shared_ptr impl_; - void log_formatted_(spdlog::lite::level lvl, const fmt::memory_buffer &formatted); void log_formatted_(const spdlog::lite::src_loc &src, spdlog::lite::level lvl, const fmt::memory_buffer &formatted); + void log_string_view_(const spdlog::lite::src_loc &src, spdlog::lite::level lvl, const string_view_t &sv); + void log_string_view_(spdlog::lite::level lvl, const string_view_t &sv); + }; spdlog::lite::logger &default_logger(); @@ -199,6 +245,7 @@ void trace(const char *fmt, const Args &... args) { default_logger().trace(fmt, args...); } + template void debug(const char *fmt, const Args &... args) {