MyGUI
3.2.1
|
00001 /* 00002 * This source file is part of MyGUI. For the latest info, see http://mygui.info/ 00003 * Distributed under the MIT License 00004 * (See accompanying file COPYING.MIT or copy at http://opensource.org/licenses/MIT) 00005 */ 00006 00007 #ifndef __MYGUI_LOG_MANAGER_H__ 00008 #define __MYGUI_LOG_MANAGER_H__ 00009 00010 #include "MyGUI_Prerequest.h" 00011 #include "MyGUI_LogStream.h" 00012 #include "MyGUI_LogSource.h" 00013 #include "MyGUI_Diagnostic.h" 00014 #include <vector> 00015 00016 namespace MyGUI 00017 { 00018 00019 #define MYGUI_LOGGING(section, level, text) \ 00020 MyGUI::LogManager::getInstance().log(section, MyGUI::LogLevel::level, MyGUI::LogStream() << text << MyGUI::LogStream::End(), __FILE__, __LINE__) 00021 00022 class ConsoleLogListener; 00023 class FileLogListener; 00024 class LevelLogFilter; 00025 00026 class MYGUI_EXPORT LogManager 00027 { 00028 public: 00029 LogManager(); 00030 ~LogManager(); 00031 00032 static LogManager& getInstance(); 00033 static LogManager* getInstancePtr(); 00034 00036 void flush(); 00038 void log(const std::string& _section, LogLevel _level, const std::string& _message, const char* _file, int _line); 00039 00041 void createDefaultSource(const std::string& _logname); 00042 00046 void setSTDOutputEnabled(bool _value); 00048 bool getSTDOutputEnabled() const; 00049 00051 void setLoggingLevel(LogLevel _value); 00053 LogLevel getLoggingLevel() const; 00054 00056 void addLogSource(LogSource* _source); 00057 00058 private: 00059 void close(); 00060 00061 private: 00062 static LogManager* msInstance; 00063 00064 typedef std::vector<LogSource*> VectorLogSource; 00065 VectorLogSource mSources; 00066 00067 ConsoleLogListener* mConsole; 00068 FileLogListener* mFile; 00069 LevelLogFilter* mFilter; 00070 LogSource* mDefaultSource; 00071 00072 LogLevel mLevel; 00073 bool mConsoleEnable; 00074 }; 00075 00076 } // namespace MyGUI 00077 00078 #endif // __MYGUI_LOG_MANAGER_H__