MyGUI
3.0.3
|
00001 00007 /* 00008 This file is part of MyGUI. 00009 00010 MyGUI is free software: you can redistribute it and/or modify 00011 it under the terms of the GNU Lesser General Public License as published by 00012 the Free Software Foundation, either version 3 of the License, or 00013 (at your option) any later version. 00014 00015 MyGUI is distributed in the hope that it will be useful, 00016 but WITHOUT ANY WARRANTY; without even the implied warranty of 00017 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00018 GNU Lesser General Public License for more details. 00019 00020 You should have received a copy of the GNU Lesser General Public License 00021 along with MyGUI. If not, see <http://www.gnu.org/licenses/>. 00022 */ 00023 #ifndef __MYGUI_LOG_MANAGER_H__ 00024 #define __MYGUI_LOG_MANAGER_H__ 00025 00026 #include "MyGUI_Prerequest.h" 00027 #include "MyGUI_LogStream.h" 00028 #include <map> 00029 00030 namespace MyGUI 00031 { 00032 00033 #define MYGUI_LOGGING(section, level, text) \ 00034 MyGUI::LogManager::out(section, MyGUI::LogManager::level) \ 00035 << text \ 00036 << MyGUI::LogManager::info(__FILE__, __LINE__) \ 00037 << MyGUI::LogManager::end() 00038 00039 class MYGUI_EXPORT LogManager 00040 { 00041 00042 public: 00043 enum LogLevel 00044 { 00045 Info, 00046 Warning, 00047 Error, 00048 Critical, 00049 EndLogLevel 00050 }; 00051 00052 public: 00053 static void shutdown(); 00054 static void initialise(); 00055 00056 static void registerSection(const std::string& _section, const std::string& _file); 00057 static void unregisterSection(const std::string& _section); 00058 00059 static LogStream& out(const std::string& _section, LogLevel _level); 00060 static const std::string& info(const char * _file /* = __FILE__*/, int _line /* = __LINE__*/); 00061 00062 static const LogStream::LogStreamEnd& end(); 00063 00064 // set logging enabled on std output device 00065 static void setSTDOutputEnabled(bool _enable); 00066 static bool getSTDOutputEnabled(); 00067 00068 private: 00069 LogManager(); 00070 ~LogManager(); 00071 00072 public: 00073 static const std::string General; 00074 static const std::string separator; 00075 00076 static LogStream::LogStreamEnd endl; 00077 static const std::string LevelsName[EndLogLevel]; 00078 00079 private: 00080 static LogManager * msInstance; 00081 typedef std::map<std::string, LogStream*> MapLogStream; 00082 MapLogStream mMapSectionFileName; 00083 bool mSTDOut; 00084 }; 00085 00086 } // namespace MyGUI 00087 00088 #endif // __MYGUI_LOG_MANAGER_H__