MyGUI 3.4.3
MyGUI_LogManager.h
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#ifndef MYGUI_LOG_MANAGER_H_
8#define MYGUI_LOG_MANAGER_H_
9
10#include "MyGUI_Prerequest.h"
11#include "MyGUI_LogStream.h"
12#include "MyGUI_LogSource.h"
13#include "MyGUI_Diagnostic.h"
14#include <memory>
15#include <vector>
16
17namespace MyGUI
18{
19
20#define MYGUI_LOGGING(section, level, text) \
21 MyGUI::LogManager::getInstance().log( \
22 section, \
23 MyGUI::LogLevel::level, \
24 MyGUI::LogStream() << text << MyGUI::LogStream::End(), \
25 __FILE__, \
26 __LINE__)
27
28 class ConsoleLogListener;
29 class FileLogListener;
30 class LevelLogFilter;
31
33 {
34 public:
35 LogManager();
37
38 static LogManager& getInstance();
39 static LogManager* getInstancePtr();
40
42 void flush();
44 void log(
45 std::string_view _section,
46 LogLevel _level,
47 std::string_view _message,
48 std::string_view _file,
49 int _line);
50
52 void createDefaultSource(std::string_view _logname);
53
57 void setSTDOutputEnabled(bool _value);
59 bool getSTDOutputEnabled() const;
60
62 void setLoggingLevel(LogLevel _value);
64 LogLevel getLoggingLevel() const;
65
67 void addLogSource(LogSource* _source);
68
69 private:
70 void close();
71
72 private:
73 static LogManager* msInstance;
74
75 using VectorLogSource = std::vector<LogSource*>;
76 VectorLogSource mSources;
77
78 std::unique_ptr<ConsoleLogListener> mConsole;
79 std::unique_ptr<FileLogListener> mFile;
80 std::unique_ptr<LevelLogFilter> mFilter;
81 std::unique_ptr<LogSource> mDefaultSource;
82
83 LogLevel mLevel{LogLevel::Info};
84 bool mConsoleEnable{true};
85 };
86
87} // namespace MyGUI
88
89#endif // MYGUI_LOG_MANAGER_H_
#define MYGUI_EXPORT