diff options
author | Mateusz Zalega <mateusz@appliedsourcery.com> | 2015-10-22 23:07:23 +0200 |
---|---|---|
committer | Mateusz Zalega <mateusz@appliedsourcery.com> | 2015-10-26 20:49:55 +0100 |
commit | 9b8ebc6ed1a1fdc15c404774bf102c883a34d990 (patch) | |
tree | fce9205359704dcce84a1f770878901fbc9c2b3e /include/log.h | |
parent | c4aec144256e3f27fedd8f8de03e10cc08eecab8 (diff) | |
download | libnitrokey-9b8ebc6ed1a1fdc15c404774bf102c883a34d990.tar.gz libnitrokey-9b8ebc6ed1a1fdc15c404774bf102c883a34d990.tar.bz2 |
Minor fixes, working version
Diffstat (limited to 'include/log.h')
-rw-r--r-- | include/log.h | 63 |
1 files changed, 63 insertions, 0 deletions
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 <string> +#include <cstddef> + +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 |