/* --- logConsoleGUI.h ----------------------------------------- System: Log system for gui applications Status: Version 1.0 Release 2 Language: C++ (c) Copyright SD-Innovation 2016 Address: SD-INNOVATION SAS Site Eiffel Energie / ZAC Ban La Dame 48, square Eugène Herzog 54390 FROUARD FRANCE Author: Sylvain Schneider E-Mail: s.schneider@sd-innovation.fr Description: Header file for logConsoleGUI This class allows you to attach GUI application to text console or file to write log informations. Thread Safe: No Platform Dependencies: None (i.e.: Linux/Intel, IRIX/Mips, Solaris/SPARC) Compiler Options: Change History: Date Author Description 2016-09-28 Sylvain Schneider Closing the console window when it released 2016-08-23 Sylvain Schneider First version ------------------------------------------------------------- */ #ifndef LOGCONSOLEGUI_H #define LOGCONSOLEGUI_H #include #include #include #include enum e_logLevel { level_DEBUG_COMMUNICATION, // Information useful to developers for debugging the communication application level_DEBUG, // Information useful to developers for debugging the application level_INFORMATIONS, // Normal operational messages that require no action (An application has started, paused or ended successfully) level_NOTICE, // Events that are unusual, but not error conditions level_WARNING, // May indicate that an error will occur if action is not taken level_ERROR, // Error conditions level_CRITICAL, // Critical conditions level_ALERT, // Should be corrected immediately level_EMERGENCY, // Application is unusable }; namespace sdiTools { //-------------------------------------------------------------- class logConsoleGUI { public: public: logConsoleGUI(const std::string &logFilepath = ""); // Constructor virtual ~logConsoleGUI(); // Destructor void openLogFile(const std::string &logFilepath); // Open log file void closeLogFile(); // Close log file int64_t getLogFileSize(); // Return opened log file size void initConsole(bool attachOnly = false); // Init application console void releaseConsole(); // Release application console bool hasAttachedConsole(); // Returns true if console was attached, false otherwise void disable_quickEditMode(); void alwaysOnTop(); void log(const std::string &msg, // Log message into console and log file e_logLevel level = level_INFORMATIONS); virtual std::string header(); // Define header to console log private: std::ofstream m_logFile; FILE *m_stdoutFile = nullptr; FILE *m_stderrFile = nullptr; }; //-------------------------------------------------------------- } // namespace sdiTools typedef std::unique_ptr t_logConsoleGUI; extern t_logConsoleGUI logConsole; #endif // LOGCONSOLEGUI_H