#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, bool accumulate = false); ~Logger(); void log (Severity severity, const std::string& comment, bool colored = true) const; std::list getLog() const; void printLog(bool colored = true) const; private: void printMessage(const Message& message, bool colored = false) const; private: bool accumulate; const Severity currentSeverity; mutable std::list history; mutable std::mutex readMutex; mutable std::mutex writeMutex; };