//--------------------------------------------------------------------------- #ifndef logRotateH #define logRotateH //--------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include #include #include #include //--------------------------------------------------------------------------- struct LogRec{ std::string thread; std::string level; std::string data; bool cout; }; //--------------------------------------------------------------------------- class Logger { private: std::ofstream file; std::string fileName; std::string date; std::atomic stop; std::mutex queueMutex; std::queue logQueue; std::condition_variable queueCondition; std::thread logThread; void processQueue(); void writeLog(std::string thread, std::string level, std::string data, bool cout); void rotateLogFile(); void openLogFile(); std::string getCurrentDate(); std::string getCurrentDateTime(); public: Logger(std::string fileName); ~Logger(); void log(std::string thread, std::string level, std::string data, bool cout=false); }; //--------------------------------------------------------------------------- #endif