00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
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 , int _line );
00061
00062 static const LogStream::LogStreamEnd& end();
00063
00064
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 }
00087
00088 #endif // __MYGUI_LOG_MANAGER_H__