Elaztek Developer Hub
Blamite Game Engine - Strings  00367.02.08.23.1815.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 
8 
9 #ifdef STRINGS_EXPORTS
10 #define STRINGS_API __declspec(dllexport)
11 #else
12 #define STRINGS_API __declspec(dllimport)
13 #endif
14 
15 #define LOGGER_ID_GUERILLA 1
16 #define LOGGER_ID_KEYSTONE 2
17 #define LOGGER_ID_STRINGS 3
18 #define LOGGER_ID_TOOL 4
19 #define LOGGER_ID_UNIFIED 5
20 
21 // Warning severities
22 #define WSV_NONE BlamLogLevel::None
23 #define WSV_ERROR BlamLogLevel::Error
24 #define WSV_WARNING BlamLogLevel::Warning
25 #define WSV_SEVERE BlamLogLevel::Severe
26 
27 class BlamBasicLogger;
28 
35 enum class TerminalColor
36 {
37  Black,
38  Blue,
39  Green,
40  Cyan,
41  Red,
42  Magenta,
43  Gold,
44  Gray,
45 
46  DarkGray,
47  BrightBlue,
49  BrightCyan,
50  BrightRed,
52  Yellow,
53  White,
54  Reset
55 };
56 
60 enum class BlamLogLevel
61 {
62  None,
63  Warning,
64  Error,
65  Severe,
66 };
67 
68 // Visibility options
69 #define WVIS_NONE BlamLogVisibility::None
70 #define WVIS_ALL BlamLogVisibility::All
71 #define WVIS_STDOUT_ONLY BlamLogVisibility::StdoutOnly
72 #define WVIS_FILE_ONLY BlamLogVisibility::FileOnly
73 #define WVIS_HTML_ONLY BlamLogVisibility::HTMLOnly
74 #define WVIS_TXT_ONLY BlamLogVisibility::TXTOnly
75 
76 
80 {
81  None,
82  All,
83  StdoutOnly,
84  FileOnly,
85  HTMLOnly,
86  TXTOnly
87 };
88 
92 enum class BlamReportType
93 {
94  Debug,
95  DebugFull,
96  TagDebug,
97  UIDebug,
99 };
100 
105 {
107 
108  std::string timestamp;
109  std::string message;
110  BlamLogLevel severity = WSV_NONE;
111  bool show_timestamp = true;
112 
113  bool override_color = false;
115 
117 
118  bool override_duplicate_limit = false;
119 };
120 
125 {
126 public:
127  BlamBasicLogger* logger = nullptr;
130  bool has_custom_color = false;
131  std::string message = "";
132  std::string timestamp = "";
133 
145  std::string GetMessageLine();
146 
154  bool Equals(BlamBasicLogMessage other_message);
155 };
156 
161 {
162 public:
168  virtual void LogMessageReceived(BlamBasicLogMessage message) {};
169 };
170 
180 {
181 private:
182  bool print_to_stdout = false;
183 
184  std::vector<BlamBasicLogMessage> history = std::vector<BlamBasicLogMessage>();
185  std::vector<BlamLogReceiver*> receivers = std::vector<BlamLogReceiver*>();
186 
187  int unique_id = -1;
188  bool has_id = false;
189 
190 public:
194  BlamBasicLogger();
195 
201  BlamBasicLogger(int _unique_id);
202 
206  void ClearHistory();
207 
213  void SetCommandLinePrintingEnabled(bool print_to_cmd);
214 
220  std::vector<BlamBasicLogMessage> GetHistory();
221 
227  void LogEvent(BlamBasicLogMessage message);
228 
234  void LogEvent(std::string message);
235 
242  void LogEvent(std::string message, BlamLogLevel log_level);
243 
250  void LogEvent(std::string message, TerminalColor color);
251 
257  void AddReceiver(BlamLogReceiver* receiver);
258 
264  void RemoveReceiver(BlamLogReceiver* receiver);
265 };
266 
271 {
279  STRINGS_API std::string GenerateLogLevelPrefix(BlamLogLevel log_level);
280 
289 
296  STRINGS_API void PrintMessageToStdout(std::string message, TerminalColor color);
297 }
TerminalColor::BrightBlue
@ BrightBlue
BlamLogVisibility::All
@ All
The message will be shown in all places where log output can be written.
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:160
BlamLogVisibility
BlamLogVisibility
Enumerator to specify log event visibility.
Definition: logger.h:79
BlamReportType::ShadersDebug
@ ShadersDebug
BlamReport file for shader messages.
BlamBasicLogMessage
Class represneting a basic log message.
Definition: logger.h:124
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:168
STRINGS_API
#define STRINGS_API
Definition: logger.h:12
BlamColor.h
BlamLogMessage::color
BlamColor color
The overridden color information. Overrules any severity-based coloring.
Definition: logger.h:114
BlamLogMessage::message
std::string message
The message contents.
Definition: logger.h:109
BlamLogVisibility::FileOnly
@ FileOnly
The message will only be written to the log file.
TerminalColor::Magenta
@ Magenta
TerminalColor::Cyan
@ Cyan
WVIS_ALL
#define WVIS_ALL
Macro for 'All' log visibility. Original pre-enum value was 0.
Definition: logger.h:70
BlamLogVisibility::HTMLOnly
@ HTMLOnly
The message will only be written to the log file, if the file is in HTML format.
BlamReportType::UIDebug
@ UIDebug
BlamReport file for all UI messages.
BlamLogVisibility::TXTOnly
@ TXTOnly
The message will only be written to the log file, if the file is in plain text format.
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
BlamReportType
BlamReportType
Enumerator containing possible report types.
Definition: logger.h:92
TerminalColor::White
@ White
BlamReportType::DebugFull
@ DebugFull
Similar to debug, but includes additional messages that would be hidden from debug.
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
BlamReportType::TagDebug
@ TagDebug
BlamReport file for all tag related messages.
TerminalColor::BrightGreen
@ BrightGreen
BlamLogLevel::Severe
@ Severe
Indicates a severe error that the engine cannot recover from.
BlamReportType::Debug
@ Debug
Default report file. Contains all log messages found in other reports, excluding debug_full.
WSV_NONE
#define WSV_NONE
Macro for 'None' log seveirty.
Definition: logger.h:22
TerminalColor::Black
@ Black
BlamLogMessage
Structure to store log message data.
Definition: logger.h:104
BlamStrings::Interface::Logger
Namespace containing functions related to the logger.
Definition: logger.h:270
BlamStrings::Logger::GetHistory
STRINGS_API std::vector< BlamBasicLogMessage > GetHistory()
Retrieves log history.
Definition: logger.cpp:87
BlamLogMessage::timestamp
std::string timestamp
The timestamp of the log message.
Definition: logger.h:108
TerminalColor::Green
@ Green
TerminalColor
TerminalColor
Enumerator listing all possible terminal colors.
Definition: logger.h:35
BlamLogVisibility::StdoutOnly
@ StdoutOnly
The message will only be shown to the in-game console and STDOUT.
TerminalColor::Gold
@ Gold
BlamColor
Class representing a color.
Definition: BlamColor.h:19
BlamBasicLogger
Class representing a basic logger.
Definition: logger.h:179
BlamLogLevel
BlamLogLevel
Enumerator to specify log event severity.
Definition: logger.h:60
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