#pragma once #include #include #include #include #include #include class Logger { public: enum class Severity { debug, info, minor, major, warning, error, fatal }; typedef std::pair Message; Logger(Severity severity = Severity::info); ~Logger(); void log (Severity severity, const std::string& comment) const; std::list getLog() const; void printLog(bool colored = true); private: const Severity currentSeverity; mutable std::list history; mutable std::mutex readMutex; mutable std::mutex writeMutex; };