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
00029 namespace MyGUI
00030 {
00031
00032 #define MYGUI_LOGGING(section, level, text) \
00033 MyGUI::LogManager::out(section, MyGUI::LogManager::level) \
00034 << text \
00035 << MyGUI::LogManager::info(__FILE__, __LINE__) \
00036 << MyGUI::LogManager::end()
00037
00038 class MYGUI_EXPORT LogManager
00039 {
00040
00041 public:
00042 enum LogLevel
00043 {
00044 Info,
00045 Warning,
00046 Error,
00047 Critical,
00048 EndLogLevel
00049 };
00050
00051 public:
00052 static void shutdown();
00053 static void initialise();
00054
00055 static void registerSection(const std::string& _section, const std::string& _file);
00056 static void unregisterSection(const std::string& _section);
00057
00058 static LogStream& out(const std::string& _section, LogLevel _level);
00059 static const std::string& info(const char * _file , int _line );
00060
00061 static const LogStream::LogStreamEnd& end();
00062
00063
00064 static void setSTDOutputEnabled(bool _enable);
00065 static bool getSTDOutputEnabled();
00066
00067 private:
00068 LogManager();
00069 ~LogManager();
00070
00071 public:
00072 static const std::string General;
00073 static const std::string separator;
00074
00075 static LogStream::LogStreamEnd endl;
00076 static const std::string LevelsName[EndLogLevel];
00077
00078 private:
00079 static LogManager * msInstance;
00080 typedef std::map<std::string, LogStream*> MapLogStream;
00081 MapLogStream mMapSectionFileName;
00082 bool mSTDOut;
00083 };
00084
00085 }
00086
00087 #endif // __MYGUI_LOG_MANAGER_H__