Elaztek Developer Hub
Blamite Game Engine - Strings  00338.10.02.21.0533.blamite
A library containing general purpose utilities and classes for use in multiple projects.
logger.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <string>
4 #include <vector>
5 
7 
8 #ifdef STRINGS_EXPORTS
9 #define STRINGS_API __declspec(dllexport)
10 #else
11 #define STRINGS_API __declspec(dllimport)
12 #endif
13 
14 #define LOGGER_ID_GUERILLA 1
15 #define LOGGER_ID_KEYSTONE 2
16 #define LOGGER_ID_STRINGS 3
17 #define LOGGER_ID_TOOL 4
18 #define LOGGER_ID_UNIFIED 5
19 
20 // Warning severities
21 #define WSV_NONE BlamLogLevel::None
22 #define WSV_ERROR BlamLogLevel::Error
23 #define WSV_WARNING BlamLogLevel::Warning
24 #define WSV_SEVERE BlamLogLevel::Severe
25 
26 class BlamBasicLogger;
27 
34 enum class TerminalColor
35 {
36  Black,
37  Blue,
38  Green,
39  Cyan,
40  Red,
41  Magenta,
42  Gold,
43  Gray,
44 
45  DarkGray,
46  BrightBlue,
48  BrightCyan,
49  BrightRed,
51  Yellow,
52  White,
53  Reset
54 };
55 
59 enum class BlamLogLevel
60 {
61  None,
62  Warning,
63  Error,
64  Severe,
65 };
66 
71 {
72 public:
73  BlamBasicLogger* logger = nullptr;
76  bool has_custom_color = false;
77  std::string message = "";
78  std::string timestamp = "";
79 
91  std::string GetMessageLine();
92 };
93 
98 {
99 public:
105  virtual void LogMessageReceived(BlamBasicLogMessage message) {};
106 };
107 
117 {
118 private:
119  bool print_to_stdout = false;
120 
121  std::vector<BlamBasicLogMessage> history = std::vector<BlamBasicLogMessage>();
122  std::vector<BlamLogReceiver*> receivers = std::vector<BlamLogReceiver*>();
123 
124  int unique_id = -1;
125  bool has_id = false;
126 
127 public:
131  BlamBasicLogger();
132 
138  BlamBasicLogger(int _unique_id);
139 
143  void ClearHistory();
144 
150  void SetCommandLinePrintingEnabled(bool print_to_cmd);
151 
157  std::vector<BlamBasicLogMessage> GetHistory();
158 
164  void LogEvent(BlamBasicLogMessage message);
165 
171  void LogEvent(std::string message);
172 
179  void LogEvent(std::string message, BlamLogLevel log_level);
180 
187  void LogEvent(std::string message, TerminalColor color);
188 
194  void AddReceiver(BlamLogReceiver* receiver);
195 
201  void RemoveReceiver(BlamLogReceiver* receiver);
202 };
203 
208 {
216  STRINGS_API std::string GenerateLogLevelPrefix(BlamLogLevel log_level);
217 
226 
233  STRINGS_API void PrintMessageToStdout(std::string message, TerminalColor color);
234 }
TerminalColor::BrightBlue
@ BrightBlue
TerminalColor::Yellow
@ Yellow
TerminalColor::Reset
@ Reset
BlamStrings::Logger::LogEvent
STRINGS_API void LogEvent(std::string message, TerminalColor color)
Logs an event to the logger.
Definition: logger.cpp:57
BlamLogReceiver
Interface used to receive log messages.
Definition: logger.h:97
BlamBasicLogMessage
Class represneting a basic log message.
Definition: logger.h:70
BlamStrings::Interface::Logger::GenerateLogLevelPrefix
STRINGS_API std::string GenerateLogLevelPrefix(BlamLogLevel log_level)
Generates a prefix for a given log level, such as [INFO] or [WARN].
Definition: logger.cpp:7
TerminalColor::BrightCyan
@ BrightCyan
BlamStrings::Logger::AddReceiver
STRINGS_API void AddReceiver(BlamLogReceiver *receiver)
Registers a receiver which will be notified on new log messages.
Definition: logger.cpp:67
BlamLogReceiver::LogMessageReceived
virtual void LogMessageReceived(BlamBasicLogMessage message)
Called whenever a log message is received.
Definition: logger.h:105
STRINGS_API
#define STRINGS_API
Definition: logger.h:11
TerminalColor::Magenta
@ Magenta
TerminalColor::Cyan
@ Cyan
TerminalColor::Gray
@ Gray
TerminalColor::Blue
@ Blue
BlamStrings::Interface::Logger::TranslateLogLevelAsColor
STRINGS_API TerminalColor TranslateLogLevelAsColor(BlamLogLevel log_level)
Translates a given BlamLogLevel into the appropriate terminal color.
Definition: logger.cpp:29
BlamStrings::Logger::RemoveReceiver
STRINGS_API void RemoveReceiver(BlamLogReceiver *receiver)
Unregisters a receiver.
Definition: logger.cpp:77
TerminalColor::White
@ White
BlamLogLevel::Error
@ Error
Indicates an error that could cause engine instability.
TerminalColor::DarkGray
@ DarkGray
TerminalColor::BrightRed
@ BrightRed
BlamLogLevel::None
@ None
Indicates no severity, and is displayed with no formatting.
TerminalColor::Red
@ Red
TerminalColor::BrightGreen
@ BrightGreen
BlamLogLevel::Severe
@ Severe
Indicates a severe error that the engine cannot recover from.
TerminalColor::Black
@ Black
BlamStrings::Interface::Logger
Namespace containing functions related to the logger.
Definition: logger.h:207
BlamStrings::Logger::GetHistory
STRINGS_API std::vector< BlamBasicLogMessage > GetHistory()
Retrieves log history.
Definition: logger.cpp:87
TerminalColor::Green
@ Green
TerminalColor
TerminalColor
Enumerator listing all possible terminal colors.
Definition: logger.h:34
TerminalColor::Gold
@ Gold
BlamBasicLogger
Class representing a basic logger.
Definition: logger.h:116
BlamLogLevel
BlamLogLevel
Enumerator to specify log event severity.
Definition: logger.h:59
BlamLogLevel::Warning
@ Warning
Indicates a warning message. Not something critical, but something that could cause unexpected behavi...
TerminalColor::BrightMagenta
@ BrightMagenta
datetime.h
BlamStrings::Interface::Logger::PrintMessageToStdout
STRINGS_API void PrintMessageToStdout(std::string message, TerminalColor color)
Prints a message to the standard output.
Definition: logger.cpp:49