1 /* 2 * This source file is part of MyGUI. For the latest info, see http://mygui.info/ 3 * Distributed under the MIT License 4 * (See accompanying file COPYING.MIT or copy at http://opensource.org/licenses/MIT) 5 */ 6 7 #ifndef MYGUI_LOG_MANAGER_H_ 8 #define MYGUI_LOG_MANAGER_H_ 9 10 #include "MyGUI_Prerequest.h" 11 #include "MyGUI_LogStream.h" 12 #include "MyGUI_LogSource.h" 13 #include "MyGUI_Diagnostic.h" 14 #include <vector> 15 16 namespace MyGUI 17 { 18 19 #define MYGUI_LOGGING(section, level, text) \ 20 MyGUI::LogManager::getInstance().log(section, MyGUI::LogLevel::level, MyGUI::LogStream() << text << MyGUI::LogStream::End(), __FILE__, __LINE__) 21 22 class ConsoleLogListener; 23 class FileLogListener; 24 class LevelLogFilter; 25 26 class MYGUI_EXPORT LogManager 27 { 28 public: 29 LogManager(); 30 ~LogManager(); 31 32 static LogManager& getInstance(); 33 static LogManager* getInstancePtr(); 34 35 /** Call LogSource::flush() for all log sources. */ 36 void flush(); 37 /** Call LogSource::log for all log sources. */ 38 void log(const std::string& _section, LogLevel _level, const std::string& _message, const char* _file, int _line); 39 40 /** Create default LevelLogFilter, FileLogListener and ConsoleLogListener. */ 41 void createDefaultSource(const std::string& _logname); 42 43 /** Enable or disable default ConsoleLogListener that writes log into std::cout.\n 44 Enabled (true) by default. 45 */ 46 void setSTDOutputEnabled(bool _value); 47 /** Is disable ConsoleLogListener enabled. */ 48 bool getSTDOutputEnabled() const; 49 50 /** Set default LevelLogFilter level. */ 51 void setLoggingLevel(LogLevel _value); 52 /** Get default LevelLogFilter level. */ 53 LogLevel getLoggingLevel() const; 54 55 /** Add log source. */ 56 void addLogSource(LogSource* _source); 57 58 private: 59 void close(); 60 61 private: 62 static LogManager* msInstance; 63 64 using VectorLogSource = std::vector<LogSource*>; 65 VectorLogSource mSources; 66 67 ConsoleLogListener* mConsole; 68 FileLogListener* mFile; 69 LevelLogFilter* mFilter; 70 LogSource* mDefaultSource; 71 72 LogLevel mLevel; 73 bool mConsoleEnable; 74 }; 75 76 } // namespace MyGUI 77 78 #endif // MYGUI_LOG_MANAGER_H_ 79