MyGUI  3.4.0
MyGUI_LogManager.cpp
Go to the documentation of this file.
1 /*
2  * This source file is part of MyGUI. For the latest info, see http://mygui.info/
3  * Distributed under the MIT License
4  * (See accompanying file COPYING.MIT or copy at http://opensource.org/licenses/MIT)
5  */
6 
7 #include "MyGUI_Precompiled.h"
8 #include "MyGUI_LogManager.h"
11 #include "MyGUI_LevelLogFilter.h"
12 #include <ctime>
13 
14 namespace MyGUI
15 {
16 
17  LogManager* LogManager::msInstance = nullptr;
18 
20  mConsole(nullptr),
21  mFile(nullptr),
22  mFilter(nullptr),
23  mDefaultSource(nullptr),
24  mLevel(LogLevel::Info),
25  mConsoleEnable(true)
26  {
27  msInstance = this;
28  }
29 
31  {
32  flush();
33  close();
34 
35  delete mDefaultSource;
36  mDefaultSource = nullptr;
37  delete mConsole;
38  mConsole = nullptr;
39  delete mFile;
40  mFile = nullptr;
41  delete mFilter;
42  mFilter = nullptr;
43 
44  msInstance = nullptr;
45  }
46 
48  {
49  MYGUI_ASSERT(nullptr != getInstancePtr(), "Singleton instance LogManager was not created");
50  return *msInstance;
51  }
52 
54  {
55  return msInstance;
56  }
57 
59  {
60  for (VectorLogSource::iterator item = mSources.begin(); item != mSources.end(); ++item)
61  (*item)->flush();
62  }
63 
64  void LogManager::log(const std::string& _section, LogLevel _level, const std::string& _message, const char* _file, int _line)
65  {
66  time_t ctTime;
67  time(&ctTime);
68  struct tm* currentTime;
69  currentTime = localtime(&ctTime);
70 
71  for (VectorLogSource::iterator item = mSources.begin(); item != mSources.end(); ++item)
72  (*item)->log(_section, _level, currentTime, _message, _file, _line);
73  }
74 
75  void LogManager::close()
76  {
77  for (VectorLogSource::iterator item = mSources.begin(); item != mSources.end(); ++item)
78  (*item)->close();
79  }
80 
82  {
83  mSources.push_back(_source);
84  }
85 
86  void LogManager::createDefaultSource(const std::string& _logname)
87  {
88  mDefaultSource = new LogSource();
89 
90  mConsole = new ConsoleLogListener();
91  mConsole->setEnabled(mConsoleEnable);
92  mDefaultSource->addLogListener(mConsole);
93 
94 #ifndef EMSCRIPTEN
95  mFile = new FileLogListener();
96  mFile->setFileName(_logname);
97  mDefaultSource->addLogListener(mFile);
98 #endif
99 
100  mFilter = new LevelLogFilter();
101  mFilter->setLoggingLevel(mLevel);
102  mDefaultSource->setLogFilter(mFilter);
103 
104  mDefaultSource->open();
105 
106  LogManager::getInstance().addLogSource(mDefaultSource);
107  }
108 
110  {
111  mConsoleEnable = _value;
112 
113  if (mConsole != nullptr)
114  mConsole->setEnabled(_value);
115  }
116 
118  {
119  return mConsoleEnable;
120  }
121 
123  {
124  mLevel = _value;
125 
126  if (mFilter != nullptr)
127  mFilter->setLoggingLevel(_value);
128  }
129 
131  {
132  return mLevel;
133  }
134 
135 } // namespace MyGUI
MyGUI::LevelLogFilter
Definition: MyGUI_LevelLogFilter.h:18
MyGUI::LevelLogFilter::setLoggingLevel
void setLoggingLevel(LogLevel _value)
Definition: MyGUI_LevelLogFilter.cpp:23
MyGUI::LogSource
Definition: MyGUI_LogSource.h:19
MyGUI::LogManager::LogManager
LogManager()
Definition: MyGUI_LogManager.cpp:19
MyGUI::LogManager::getSTDOutputEnabled
bool getSTDOutputEnabled() const
Definition: MyGUI_LogManager.cpp:117
MyGUI_LogManager.h
MyGUI_ConsoleLogListener.h
MyGUI::FileLogListener::setFileName
void setFileName(const std::string &_value)
Definition: MyGUI_FileLogListener.cpp:62
MyGUI::LogManager
Definition: MyGUI_LogManager.h:27
MyGUI::LogManager::createDefaultSource
void createDefaultSource(const std::string &_logname)
Definition: MyGUI_LogManager.cpp:86
MyGUI_LevelLogFilter.h
MyGUI::LogManager::getInstancePtr
static LogManager * getInstancePtr()
Definition: MyGUI_LogManager.cpp:53
MyGUI_Precompiled.h
MyGUI::LogManager::setLoggingLevel
void setLoggingLevel(LogLevel _value)
Definition: MyGUI_LogManager.cpp:122
MyGUI::LogManager::~LogManager
~LogManager()
Definition: MyGUI_LogManager.cpp:30
MyGUI::LogManager::getLoggingLevel
LogLevel getLoggingLevel() const
Definition: MyGUI_LogManager.cpp:130
MyGUI::LogManager::setSTDOutputEnabled
void setSTDOutputEnabled(bool _value)
Definition: MyGUI_LogManager.cpp:109
MyGUI::LogSource::addLogListener
void addLogListener(ILogListener *_lestener)
Definition: MyGUI_LogSource.cpp:25
MyGUI::ConsoleLogListener
Definition: MyGUI_ConsoleLogListener.h:18
MyGUI::FileLogListener
Definition: MyGUI_FileLogListener.h:20
MYGUI_ASSERT
#define MYGUI_ASSERT(exp, dest)
Definition: MyGUI_Diagnostic.h:34
MyGUI::LogManager::log
void log(const std::string &_section, LogLevel _level, const std::string &_message, const char *_file, int _line)
Definition: MyGUI_LogManager.cpp:64
MyGUI::LogManager::flush
void flush()
Definition: MyGUI_LogManager.cpp:58
MyGUI::ConsoleLogListener::setEnabled
void setEnabled(bool _value)
Definition: MyGUI_ConsoleLogListener.cpp:29
MyGUI::LogManager::addLogSource
void addLogSource(LogSource *_source)
Definition: MyGUI_LogManager.cpp:81
MyGUI::LogSource::open
void open()
Definition: MyGUI_LogSource.cpp:30
MyGUI_FileLogListener.h
MyGUI::LogManager::getInstance
static LogManager & getInstance()
Definition: MyGUI_LogManager.cpp:47
MyGUI::LogLevel
Definition: MyGUI_LogLevel.h:19
MyGUI
Definition: MyGUI_ActionController.h:15
MyGUI::LogSource::setLogFilter
void setLogFilter(ILogFilter *_filter)
Definition: MyGUI_LogSource.cpp:20