MyGUI  3.2.1
MyGUI_LogManager.h
Go to the documentation of this file.
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__