diff --git a/include/snipplib/utils/snplib_logger.h b/include/snipplib/utils/snplib_logger.h index 0ffff39..a47a29c 100644 --- a/include/snipplib/utils/snplib_logger.h +++ b/include/snipplib/utils/snplib_logger.h @@ -81,6 +81,28 @@ public: constexpr static std::array LOGGER_DEFAULT_FORMAT = {std::string_view{"[%Y-%m-%d %T.%e]"}, std::string_view{"[%l]"}, std::string_view{": "}, std::string_view{"%v"}}; + // special logger names + + constexpr static std::string_view STDOUT_LOGGER_MARK{"stdout"}; + + constexpr static std::string_view STDERR_LOGGER_MARK{"stderr"}; + + constexpr static std::string_view NULL_LOGGER_MARK{"null"}; + + /* helper method */ + + static std::shared_ptr makeLoggerFromMark(std::string const& mark, std::string const& name) + { + if (mark == STDOUT_LOGGER_MARK) { + return std::make_shared(name); + } else if (mark == STDERR_LOGGER_MARK) { + return std::make_shared(name); + } else if (mark == NULL_LOGGER_MARK) { + return std::make_shared(name); + } else { // 'mark' is filename here + return std::make_shared(name, mark); + } + } /* some factory static methods */ @@ -89,7 +111,7 @@ public: 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); + return snplib_spdlog_logger_t(std::make_shared(logger_name), pattern_range); } template @@ -97,7 +119,7 @@ public: 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); + return snplib_spdlog_logger_t(std::make_shared(logger_name), pattern_range); } @@ -105,7 +127,7 @@ public: 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)); + return snplib_spdlog_logger_t(std::make_shared(logger_name)); } @@ -132,6 +154,7 @@ public: _loggerSPtr->set_pattern(_currentLogPattern); } + virtual ~snplib_spdlog_logger_t() = default; void setLoglevel(spdlog::level::level_enum level)