MyGUI 3.0.1

MyGUI_LogManager.h

Go to the documentation of this file.
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__
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines