MyGUI 3.4.3
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"
12#include <ctime>
13
14namespace MyGUI
15{
16
17 LogManager* LogManager::msInstance = nullptr;
18
20 {
21 msInstance = this;
22 }
23
25 {
26 flush();
27 close();
28
29 msInstance = nullptr;
30 }
31
33 {
34 MYGUI_ASSERT(nullptr != getInstancePtr(), "Singleton instance LogManager was not created");
35 return *msInstance;
36 }
37
39 {
40 return msInstance;
41 }
42
44 {
45 for (auto& source : mSources)
46 source->flush();
47 }
48
50 std::string_view _section,
51 LogLevel _level,
52 std::string_view _message,
53 std::string_view _file,
54 int _line)
55 {
56 time_t ctTime;
57 time(&ctTime);
58 struct tm* currentTime;
59 currentTime = localtime(&ctTime);
60
61 for (auto& source : mSources)
62 source->log(_section, _level, currentTime, _message, _file, _line);
63 }
64
65 void LogManager::close()
66 {
67 for (auto& source : mSources)
68 source->close();
69 }
70
72 {
73 mSources.push_back(_source);
74 }
75
76 void LogManager::createDefaultSource(std::string_view _logname)
77 {
78 mDefaultSource = std::make_unique<LogSource>();
79
80 mConsole = std::make_unique<ConsoleLogListener>();
81 mConsole->setEnabled(mConsoleEnable);
82 mDefaultSource->addLogListener(mConsole.get());
83
84#ifndef EMSCRIPTEN
85 mFile = std::make_unique<FileLogListener>();
86 mFile->setFileName(_logname);
87 mDefaultSource->addLogListener(mFile.get());
88#endif
89
90 mFilter = std::make_unique<LevelLogFilter>();
91 mFilter->setLoggingLevel(mLevel);
92 mDefaultSource->setLogFilter(mFilter.get());
93
94 mDefaultSource->open();
95
96 LogManager::getInstance().addLogSource(mDefaultSource.get());
97 }
98
100 {
101 mConsoleEnable = _value;
102
103 if (mConsole != nullptr)
104 mConsole->setEnabled(_value);
105 }
106
108 {
109 return mConsoleEnable;
110 }
111
113 {
114 mLevel = _value;
115
116 if (mFilter != nullptr)
117 mFilter->setLoggingLevel(_value);
118 }
119
121 {
122 return mLevel;
123 }
124
125} // namespace MyGUI
#define MYGUI_ASSERT(exp, dest)
void setSTDOutputEnabled(bool _value)
void addLogSource(LogSource *_source)
void createDefaultSource(std::string_view _logname)
static LogManager * getInstancePtr()
LogLevel getLoggingLevel() const
void setLoggingLevel(LogLevel _value)
static LogManager & getInstance()
bool getSTDOutputEnabled() const
void log(std::string_view _section, LogLevel _level, std::string_view _message, std::string_view _file, int _line)