From 90c912a5e235bd66da80b6b6db6c5ab48e441251 Mon Sep 17 00:00:00 2001 From: gabime Date: Sat, 23 Mar 2019 19:34:50 +0200 Subject: [PATCH] wip lite --- .clang-tidy | 2 +- clang_tidy.sh | 3 +- example/example.cpp | 12 ++++---- include/spdlog/spdlog.h | 2 +- lite-example/create_lite.cpp | 12 ++++++-- lite-example/example.cpp | 10 +++---- lite/spdlite.cpp | 15 +++++----- lite/spdlite.h | 55 +++++++++++++++++------------------- 8 files changed, 58 insertions(+), 53 deletions(-) diff --git a/.clang-tidy b/.clang-tidy index 309c7e94..9079dd9a 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,6 +1,6 @@ Checks: 'modernize-*,modernize-use-override,google-*,-google-runtime-references,misc-*,clang-analyzer-*' WarningsAsErrors: '' -HeaderFilterRegex: 'async.h|async_logger.h|common.h|details|formatter.h|logger.h|sinks|spdlog.h|tweakme.h|version.h' +HeaderFilterRegex: 'async.h|async_logger.h|common.h|details|formatter.h|logger.h|sinks|spdlog.h|tweakme.h|version.h|spdlite.h' AnalyzeTemporaryDtors: false FormatStyle: none diff --git a/clang_tidy.sh b/clang_tidy.sh index 6e043e27..4fb8644b 100755 --- a/clang_tidy.sh +++ b/clang_tidy.sh @@ -1,2 +1,3 @@ #!/bin/bash -clang-tidy example/example.cpp -- -I ./include +clang-tidy example/example.cpp -- -I ./include +clang-tidy lite-example/example.cpp -- -I./include -I./lite diff --git a/example/example.cpp b/example/example.cpp index 0c3b8395..c0971620 100644 --- a/example/example.cpp +++ b/example/example.cpp @@ -1,11 +1,11 @@ +#define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_TRACE #include "spdlog/spdlog.h" int main() { - auto l = spdlog::default_logger(); - l->trace("HELLO {}!!!", "lite"); - l->debug("HELLO {}!!!", "lite"); - l->info("HELLO {}!!!", "lite"); - l->warn("HELLO {}!!!", "lite"); - l->critical("HELLO s{}!!!", "lite"); + // auto l = spdlog::create_lite(); + // spdlog::lite::info("HELLO info {}", 123); + + SPDLOG_TRACE("SOME MACRO {}", 123); + SPDLOG_INFO("SOME MACRO {}", "HHHHH"); } \ No newline at end of file diff --git a/include/spdlog/spdlog.h b/include/spdlog/spdlog.h index e7a9bacc..fd9a1d27 100644 --- a/include/spdlog/spdlog.h +++ b/include/spdlog/spdlog.h @@ -326,7 +326,7 @@ inline void critical(const wchar_t *fmt, const Args &... args) // SPDLOG_LEVEL_OFF // -#define SPDLOG_LOGGER_CALL(logger, level, ...) \ +#define SPDLOG_LOGGER_CALL(logger, level, ...) \ logger->log(spdlog::source_loc{SPDLOG_FILE_BASENAME(__FILE__), __LINE__, SPDLOG_FUNCTION}, level, __VA_ARGS__) #if SPDLOG_ACTIVE_LEVEL <= SPDLOG_LEVEL_TRACE diff --git a/lite-example/create_lite.cpp b/lite-example/create_lite.cpp index beea64ba..a0e5e389 100644 --- a/lite-example/create_lite.cpp +++ b/lite-example/create_lite.cpp @@ -1,5 +1,9 @@ #include "spdlite.h" #include "spdlog/spdlog.h" +#include "spdlog/sinks/basic_file_sink.h" +#include "spdlog/sinks/stdout_color_sinks.h" + + spdlog::lite::logger spdlog::create_lite(void *ctx) { @@ -7,7 +11,9 @@ spdlog::lite::logger spdlog::create_lite(void *ctx) { //.. } - auto logger_impl = spdlog::default_logger(); - logger_impl->set_level(spdlog::level::trace); - return spdlog::lite::logger(logger_impl); + auto logger_impl = spdlog::stdout_color_mt("mylogger"); + auto file_sink = std::make_shared("file.txt", true); + logger_impl->sinks().push_back(file_sink); + logger_impl->set_level(spdlog::level::debug); + return spdlog::lite::logger(std::move(logger_impl)); } diff --git a/lite-example/example.cpp b/lite-example/example.cpp index 82ddef93..87cbc895 100644 --- a/lite-example/example.cpp +++ b/lite-example/example.cpp @@ -1,10 +1,10 @@ -#define SPDLITE_ACTIVE_LEVEL SPDLITE_LEVEL_INFO +#define SPDLITE_ACTIVE_LEVEL SPDLITE_LEVEL_TRACE #include "spdlite.h" int main() { - // auto l = spdlog::create_lite(); - // spdlog::lite::info("HELLO info {}", 123); - SPDLITE_TRACE("SOME MACRO {}", 123); - SPDLITE_INFO("SOME MACRO {}", "HHHHH"); + //auto l = spdlog::create_lite(); + //l.info("Hello spdlog {}", "lite"); + SPDLITE_TRACE("HELLO TRACE"); + } \ No newline at end of file diff --git a/lite/spdlite.cpp b/lite/spdlite.cpp index 043bd1c8..53f98fe9 100644 --- a/lite/spdlite.cpp +++ b/lite/spdlite.cpp @@ -20,22 +20,23 @@ spdlog::lite::logger::logger(std::shared_ptr impl) bool spdlog::lite::logger::should_log(spdlog::lite::level level) const SPDLOG_NOEXCEPT { auto spd_level = to_spdlog_level(level); - return impl_->should_log(spd_level); // TODO level + return impl_->should_log(spd_level); // TODO avoid the call using local level member? } -void spdlog::lite::logger::log_formatted_(spdlog::lite::level level, const fmt::memory_buffer &formatted) -{ - auto spd_level = to_spdlog_level(level); - impl_->log(spd_level, spdlog::details::fmt_helper::to_string_view(formatted)); -} -void spdlog::lite::logger::log_formatted_src(const spdlog::lite::src_loc &src, spdlog::lite::level lvl, const fmt::memory_buffer &formatted) + +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); spdlog::source_loc source_loc{src.filename, src.line, src.funcname}; 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) +{ + log_formatted_(src_loc{}, level, formatted); +} + 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 b55a7159..c1ec48ba 100644 --- a/lite/spdlite.h +++ b/lite/spdlite.h @@ -21,12 +21,16 @@ #define SPDLITE_LEVEL_CRITICAL 5 #define SPDLITE_LEVEL_OFF 6 -#define SPDLITE_LOGGER_CALL(logger, level, ...) \ - if (logger.should_log(level)) \ - logger.log(level, __VA_ARGS__) + +#define SPDLITE_LOGGER_CALL(logger, level, ...) logger.log(level, __VA_ARGS__) + +//with source info +#define SPDLITE_LOGGER_CALL2(logger, level, ...) \ + logger.log(spdlog::lite::src_loc{__FILE__, __LINE__, __FUNCTION__}, level, __VA_ARGS__) + #if SPDLITE_ACTIVE_LEVEL <= SPDLITE_LEVEL_TRACE -#define SPDLITE_LOGGER_TRACE(logger, ...) SPDLITE_LOGGER_CALL(logger, spdlog::lite::level::trace, __VA_ARGS__) +#define SPDLITE_LOGGER_TRACE(logger, ...) SPDLITE_LOGGER_CALL2(logger, spdlog::lite::level::trace, __VA_ARGS__) #define SPDLITE_TRACE(...) SPDLITE_LOGGER_TRACE(spdlog::lite::default_logger(), __VA_ARGS__) #else #define SPDLITE_LOGGER_TRACE(logger, ...) (void)0 @@ -90,9 +94,13 @@ enum class level struct src_loc { - const char *filename; - int line; - const char *funcname; + src_loc() = default; + src_loc(const char *filename, int line, const char *funcname): + filename(filename), line(line), funcname(funcname){} + + const char *filename = nullptr; + int line = 0; + const char *funcname = nullptr; }; class logger @@ -100,7 +108,7 @@ class logger public: logger() = default; - logger(std::shared_ptr impl); + explicit logger(std::shared_ptr impl); logger(const logger &) = default; logger(logger &&) = default; logger &operator=(const logger &) = default; @@ -109,18 +117,6 @@ public: bool should_log(spdlog::lite::level lvl) const noexcept; - template - void log(spdlog::lite::level lvl, const char *fmt, const Args &... args) - { - if (!should_log(lvl)) - { - return; - } - fmt::memory_buffer formatted_buf; - fmt::format_to(formatted_buf, fmt, args...); - log_formatted_(lvl, formatted_buf); - } - template void log(const spdlog::lite::src_loc &src, spdlog::lite::level lvl, const char *fmt, const Args &... args) { @@ -130,7 +126,13 @@ public: } fmt::memory_buffer formatted_buf; fmt::format_to(formatted_buf, fmt, args...); - log_formatted_src(src, lvl, formatted_buf); + log_formatted_(src, lvl, formatted_buf); + } + + template + void log(spdlog::lite::level lvl, const char *fmt, const Args &... args) + { + log(spdlog::lite::src_loc{}, lvl, fmt, args...); } template @@ -139,13 +141,7 @@ public: log(spdlog::lite::level::trace, fmt, args...); } - template - void trace(const char *source_file, int source_line, const char *source_func, const char *fmt, const Args &... args) - { - spdlog::lite::src_loc src{source_file, source_line, source_func}; - log(src, spdlog::lite::level::trace, fmt, args...); - } - + template void debug(const char *fmt, const Args &... args) { @@ -193,8 +189,9 @@ public: protected: std::shared_ptr impl_; void log_formatted_(spdlog::lite::level lvl, const fmt::memory_buffer &formatted); - void log_formatted_src(const spdlog::lite::src_loc &src, 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); }; + spdlog::lite::logger &default_logger(); template