Elaztek Developer Hub
Blamite Game Engine - Strings  00326.06.27.21.0407.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 class BlamBasicLogger;
21 
28 enum class TerminalColor
29 {
30  Black,
31  Blue,
32  Green,
33  Cyan,
34  Red,
35  Magenta,
36  Gold,
37  Gray,
38 
39  DarkGray,
40  BrightBlue,
42  BrightCyan,
43  BrightRed,
45  Yellow,
46  White,
47  Reset
48 };
49 
53 enum class BlamLogLevel
54 {
55  None,
56  Warning,
57  Error,
58  Severe,
59 
66  Input,
67 
73  AiError
74 };
75 
80 {
81 public:
82  BlamBasicLogger* logger = nullptr;
85  bool has_custom_color = false;
86  std::string message = "";
87  std::string timestamp = "";
88 
100  std::string GetMessageLine();
101 };
102 
107 {
108 public:
114  virtual void LogMessageReceived(BlamBasicLogMessage message) {};
115 };
116 
126 {
127 private:
128  bool print_to_stdout = false;
129 
130  std::vector<BlamBasicLogMessage> history = std::vector<BlamBasicLogMessage>();
131  std::vector<BlamLogReceiver*> receivers = std::vector<BlamLogReceiver*>();
132 
133  int unique_id = -1;
134  bool has_id = false;
135 
136 public:
140  BlamBasicLogger();
141 
147  BlamBasicLogger(int _unique_id);
148 
152  void ClearHistory();
153 
159  std::vector<BlamBasicLogMessage> GetHistory();
160 
166  void LogEvent(BlamBasicLogMessage message);
167 
173  void LogEvent(std::string message);
174 
181  void LogEvent(std::string message, BlamLogLevel log_level);
182 
189  void LogEvent(std::string message, TerminalColor color);
190 
196  void AddReceiver(BlamLogReceiver* receiver);
197 
203  void RemoveReceiver(BlamLogReceiver* receiver);
204 };
205 
210 {
218  STRINGS_API std::string GenerateLogLevelPrefix(BlamLogLevel log_level);
219 
228 
235  STRINGS_API void PrintMessageToStdout(std::string message, TerminalColor color);
236 }
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:52
BlamLogReceiver
Interface used to receive log messages.
Definition: logger.h:106
BlamBasicLogMessage
Class represneting a basic log message.
Definition: logger.h:79
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:62
BlamLogReceiver::LogMessageReceived
virtual void LogMessageReceived(BlamBasicLogMessage message)
Called whenever a log message is received.
Definition: logger.h:114
STRINGS_API
#define STRINGS_API
Definition: logger.h:11
TerminalColor::Magenta
@ Magenta
TerminalColor::Cyan
@ Cyan
BlamLogLevel::AiError
@ AiError
Placeholder for the future, indicates an error with AI.
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:72
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::Input
@ Input
Indicates that the user has executed a command from console.
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:209
BlamStrings::Logger::GetHistory
STRINGS_API std::vector< BlamBasicLogMessage > GetHistory()
Retrieves log history.
Definition: logger.cpp:82
TerminalColor::Green
@ Green
TerminalColor
TerminalColor
Enumerator listing all possible terminal colors.
Definition: logger.h:28
TerminalColor::Gold
@ Gold
BlamBasicLogger
Class representing a basic logger.
Definition: logger.h:125
BlamLogLevel
BlamLogLevel
Enumerator to specify log event severity.
Definition: logger.h:53
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