diff options
Diffstat (limited to 'src/logger')
-rw-r--r-- | src/logger/logger.cpp | 38 | ||||
-rw-r--r-- | src/logger/logger.hpp | 81 |
2 files changed, 0 insertions, 119 deletions
diff --git a/src/logger/logger.cpp b/src/logger/logger.cpp deleted file mode 100644 index 7336579..0000000 --- a/src/logger/logger.cpp +++ /dev/null @@ -1,38 +0,0 @@ -#include <logger/logger.hpp> -#include <config/config.hpp> - -Logger::Logger(const int log_level): - log_level(log_level), - stream(std::cout.rdbuf()) -{ -} - -Logger::Logger(const int log_level, const std::string& log_file): - log_level(log_level), - ofstream(log_file.data(), std::ios_base::app), - stream(ofstream.rdbuf()) -{ -} - -std::unique_ptr<Logger>& Logger::instance() -{ - static std::unique_ptr<Logger> instance; - - if (!instance) - { - const std::string log_file = Config::get("log_file", ""); - const int log_level = Config::get_int("log_level", 0); - if (log_file.empty()) - instance = std::make_unique<Logger>(log_level); - else - instance = std::make_unique<Logger>(log_level, log_file); - } - return instance; -} - -std::ostream& Logger::get_stream(const int lvl) -{ - if (lvl >= this->log_level) - return this->stream; - return this->null_stream; -} diff --git a/src/logger/logger.hpp b/src/logger/logger.hpp deleted file mode 100644 index b1ae20d..0000000 --- a/src/logger/logger.hpp +++ /dev/null @@ -1,81 +0,0 @@ -#ifndef LOGGER_INCLUDED -# define LOGGER_INCLUDED - -/** - * Singleton used in logger macros to write into files or stdout, with - * various levels of severity. - * Only the macros should be used. - * @class Logger - */ - -#include <memory> -#include <iostream> -#include <fstream> - -#define debug_lvl 0 -#define info_lvl 1 -#define warning_lvl 2 -#define error_lvl 3 - -#include "config.h" - -#ifdef SYSTEMD_FOUND -# include <systemd/sd-daemon.h> -#else -# define SD_DEBUG "[DEBUG]: " -# define SD_INFO "[INFO]: " -# define SD_WARNING "[WARNING]: " -# define SD_ERR "[ERROR]: " -#endif - -// Macro defined to get the filename instead of the full path. But if it is -// not properly defined by the build system, we fallback to __FILE__ -#ifndef __FILENAME__ -# define __FILENAME__ __FILE__ -#endif - -#define WHERE\ - __FILENAME__ << ":" << __LINE__ - -#define log_debug(text)\ - Logger::instance()->get_stream(debug_lvl) << SD_DEBUG << WHERE << ":\t" << text << std::endl; - -#define log_info(text)\ - Logger::instance()->get_stream(info_lvl) << SD_INFO << WHERE << ":\t" << text << std::endl; - -#define log_warning(text)\ - Logger::instance()->get_stream(warning_lvl) << SD_WARNING << WHERE << ":\t" << text << std::endl; - -#define log_error(text)\ - Logger::instance()->get_stream(error_lvl) << SD_ERR << WHERE << ":\t" << text << std::endl; - -/** - * Juste a structure representing a stream doing nothing with its input. - */ -class nullstream: public std::ostream -{ -public: - nullstream(): - std::ostream(0) - { } -}; - -class Logger -{ -public: - static std::unique_ptr<Logger>& instance(); - std::ostream& get_stream(const int); - Logger(const int log_level, const std::string& log_file); - Logger(const int log_level); - -private: - Logger(const Logger&); - Logger& operator=(const Logger&); - - const int log_level; - std::ofstream ofstream; - nullstream null_stream; - std::ostream stream; -}; - -#endif // LOGGER_INCLUDED |