From b3ed4c6c77a41443be9388a16656c8b2d96bcea5 Mon Sep 17 00:00:00 2001 From: "Timur A. Fatkhullin" Date: Tue, 7 Jul 2026 11:01:40 +0300 Subject: [PATCH] ... --- CMakeLists.txt | 4 ++ examples/logger_exam.cpp | 14 ++++++ include/snipplib/utils/snplib_logger.h | 59 +++++++++++++++++++++++++- 3 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 examples/logger_exam.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 543e19a..be857ef 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -77,6 +77,10 @@ if(SNPLIB_BUILD_EXAMPLES) set(EXAM_HVEC hvec_example) add_executable(${EXAM_HVEC} examples/hvec_example.cpp) target_link_libraries(${EXAM_HVEC} ${PROJECT_NAME}) + + set(EXAM_LOGGER logger_example) + add_executable(${EXAM_LOGGER} examples/logger_exam.cpp) + target_link_libraries(${EXAM_LOGGER} ${PROJECT_NAME}) endif() include(GNUInstallDirs) diff --git a/examples/logger_exam.cpp b/examples/logger_exam.cpp new file mode 100644 index 0000000..30570eb --- /dev/null +++ b/examples/logger_exam.cpp @@ -0,0 +1,14 @@ +#include + +int main() +{ + auto logger = snplib::snplib_spdlog_logger_t::makeConsoleLogger("console"); + + logger.setLoglevel(spdlog::level::err); + + logger.logInfo("AAAAAAAAAAA"); + + logger.logError("ERROR"); + + return 0; +} \ No newline at end of file diff --git a/include/snipplib/utils/snplib_logger.h b/include/snipplib/utils/snplib_logger.h index 9bd174f..0ffff39 100644 --- a/include/snipplib/utils/snplib_logger.h +++ b/include/snipplib/utils/snplib_logger.h @@ -3,6 +3,8 @@ #include #ifdef SNPLIB_SPDLOGGER #include +#include +#include #endif #include "../concepts/snplib_concepts.h" @@ -80,10 +82,38 @@ public: std::string_view{": "}, std::string_view{"%v"}}; + /* some factory static methods */ template requires snplib_input_char_range_c> - snplib_spdlog_logger_t(std::shared_ptr logger, R&& pattern_range = LOGGER_DEFAULT_FORMAT) + static snplib_spdlog_logger_t makeConsoleLogger(std::string const& logger_name, + R const& pattern_range = LOGGER_DEFAULT_FORMAT) + { + return snplib_spdlog_logger_t(spdlog::stdout_logger_mt(logger_name), pattern_range); + } + + template + requires snplib_input_char_range_c> + static snplib_spdlog_logger_t makeConsoleErrLogger(std::string const& logger_name, + R const& pattern_range = LOGGER_DEFAULT_FORMAT) + { + return snplib_spdlog_logger_t(spdlog::stderr_logger_mt(logger_name), pattern_range); + } + + + template + requires snplib_input_char_range_c> + static snplib_spdlog_logger_t makeNullLogger(std::string const& logger_name) + { + return snplib_spdlog_logger_t(spdlog::null_logger_mt(logger_name)); + } + + + /* constructor and destructor */ + + template + requires snplib_input_char_range_c> + snplib_spdlog_logger_t(std::shared_ptr logger, R const& pattern_range = LOGGER_DEFAULT_FORMAT) : _loggerSPtr(logger) { if (std::distance(pattern_range.begin(), pattern_range.end())) { @@ -104,6 +134,33 @@ public: virtual ~snplib_spdlog_logger_t() = default; + void setLoglevel(spdlog::level::level_enum level) + { + _loggerSPtr->set_level(level); + } + + + spdlog::level::level_enum logLevel() const + { + return _loggerSPtr->level(); + } + + + void setFlushOn(spdlog::level::level_enum level) + { + _loggerSPtr->flush_on(level); + } + + spdlog::level::level_enum flushOn() const + { + return _loggerSPtr->flush_level(); + } + + void flush() + { + _loggerSPtr->flush(); + } + void logMessage(spdlog::level::level_enum level, const std::string& msg) { _loggerSPtr->log(level, msg);