Program Listing for File PDJE_LOG_SETTER.hpp
↰ Return to documentation for file (include/PDJE_LOG_SETTER.hpp
)
#pragma once
#include <spdlog/spdlog.h>
#include <spdlog/sinks/basic_file_sink.h>
#include <spdlog/sinks/stdout_color_sinks.h>
#include <filesystem>
#include <type_traits>
#include <string_view>
inline
void startlog(){
#ifndef LOG_OFF
std::filesystem::create_directories("logs");
auto fileSink = std::make_shared<spdlog::sinks::basic_file_sink_mt>("logs/pdjeLog.txt", true);
auto consoleSink = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
std::vector<spdlog::sink_ptr> sinks {consoleSink, fileSink};
auto logger = std::make_shared<spdlog::logger>("global_logger", sinks.begin(), sinks.end());
#ifndef NDEBUG
logger->set_level(spdlog::level::debug);
#else
logger->set_level(spdlog::level::err);
#endif
logger->flush_on(spdlog::level::err);
logger->set_pattern("[%Y-%m-%d %H:%M:%S.%e] [%^%l%$] %v");
spdlog::set_default_logger(logger);
#endif
}
#ifndef LOG_OFF
#ifdef ENABLE_INFO_LOG
#define infolog(...) SPDLOG_INFO(__VA_ARGS__)
#else
#define infolog(...)
#endif
#ifdef ENABLE_WARN_LOG
#define warnlog(...) SPDLOG_WARN(__VA_ARGS__)
#else
#define warnlog(...)
#endif
#define critlog(...) SPDLOG_CRITICAL(__VA_ARGS__)
#else
#define infolog(...)
#define warnlog(...)
#define critlog(...)
#endif