From 9b8ebc6ed1a1fdc15c404774bf102c883a34d990 Mon Sep 17 00:00:00 2001 From: Mateusz Zalega Date: Thu, 22 Oct 2015 23:07:23 +0200 Subject: Minor fixes, working version --- include/log.h | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 include/log.h (limited to 'include/log.h') diff --git a/include/log.h b/include/log.h new file mode 100644 index 0000000..f6f7193 --- /dev/null +++ b/include/log.h @@ -0,0 +1,63 @@ +#ifndef LOG_H +#define LOG_H +#include +#include + +namespace nitrokey { +namespace log { + +enum class Loglevel : int { + DEBUG_L2, + DEBUG, + INFO, + WARNING, + ERROR +}; + +class LogHandler { +public: + virtual void print(const std::string &, Loglevel lvl) = 0; + +protected: + std::string loglevel_to_str(Loglevel); +}; + +class StdlogHandler : public LogHandler { +public: + virtual void print(const std::string &, Loglevel lvl); +}; + +extern StdlogHandler stdlog_handler; + +class Log { +public: + Log() + : mp_loghandler(&stdlog_handler), m_loglevel(Loglevel::WARNING) {} + + static Log &instance() { + if (mp_instance == NULL) + mp_instance = new Log; + return *mp_instance; + } + + void operator()(const std::string &, Loglevel); + + void set_loglevel(Loglevel lvl) { + m_loglevel = lvl; + } + + void set_handler(LogHandler *handler) { + mp_loghandler = handler; + } + +private: + Loglevel m_loglevel; + LogHandler *mp_loghandler; + + static Log *mp_instance; +}; + +} +} + +#endif -- cgit v1.2.1