This commit is contained in:
2026-07-07 11:01:40 +03:00
parent b04bfab964
commit b3ed4c6c77
3 changed files with 76 additions and 1 deletions

View File

@@ -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)

14
examples/logger_exam.cpp Normal file
View File

@@ -0,0 +1,14 @@
#include <snipplib/utils/snplib_logger.h>
int main()
{
auto logger = snplib::snplib_spdlog_logger_t::makeConsoleLogger("console");
logger.setLoglevel(spdlog::level::err);
logger.logInfo("AAAAAAAAAAA");
logger.logError("ERROR");
return 0;
}

View File

@@ -3,6 +3,8 @@
#include <list>
#ifdef SNPLIB_SPDLOGGER
#include <spdlog/logger.h>
#include <spdlog/sinks/null_sink.h>
#include <spdlog/sinks/stdout_sinks.h>
#endif
#include "../concepts/snplib_concepts.h"
@@ -80,10 +82,38 @@ public:
std::string_view{": "}, std::string_view{"%v"}};
/* some factory static methods */
template <std::ranges::input_range R = decltype(LOGGER_DEFAULT_FORMAT)>
requires snplib_input_char_range_c<std::ranges::range_value_t<R>>
snplib_spdlog_logger_t(std::shared_ptr<spdlog::logger> 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 <std::ranges::input_range R = decltype(LOGGER_DEFAULT_FORMAT)>
requires snplib_input_char_range_c<std::ranges::range_value_t<R>>
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 <std::ranges::input_range R = decltype(LOGGER_DEFAULT_FORMAT)>
requires snplib_input_char_range_c<std::ranges::range_value_t<R>>
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 <std::ranges::input_range R = decltype(LOGGER_DEFAULT_FORMAT)>
requires snplib_input_char_range_c<std::ranges::range_value_t<R>>
snplib_spdlog_logger_t(std::shared_ptr<spdlog::logger> 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);