Elaztek Developer Hub
Blamite Game Engine - Strings  00386.06.16.23.0646.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 
100 enum class BlamReportType
101 {
102  Debug,
103  DebugFull,
104  TagDebug,
105  UIDebug,
106  ShadersDebug,
107 
108  // Possible Future Report Types
109  AIDebug,
113  Content,
114  DesignDebug,
115  EffectsDebug,
118  GeometryDebug,
119  HSLog,
120  IncidentDebug,
126  ObjectsDebug,
128  SoundDebug,
130  SystemLog,
131 };
132 
137 {
139 
140  std::string timestamp;
141  std::string message;
142  BlamLogLevel severity = WSV_NONE;
143  bool show_timestamp = true;
144 
145  bool override_color = false;
147 
149 
150  bool override_duplicate_limit = false;
151 };
152 
157 {
158 public:
159  BlamBasicLogger* logger = nullptr;
162  bool has_custom_color = false;
163  std::string message = "";
164  std::string timestamp = "";
165 
177  std::string GetMessageLine();
178 
186  bool Equals(BlamBasicLogMessage other_message);
187 };
188 
193 {
194 public:
200  virtual void LogMessageReceived(BlamBasicLogMessage message) {};
201 };
202 
212 {
213 private:
214  bool print_to_stdout = false;
215 
216  std::vector<BlamBasicLogMessage> history = std::vector<BlamBasicLogMessage>();
217  std::vector<BlamLogReceiver*> receivers = std::vector<BlamLogReceiver*>();
218 
219  int unique_id = -1;
220  bool has_id = false;
221 
222 public:
226  BlamBasicLogger();
227 
233  BlamBasicLogger(int _unique_id);
234 
238  void ClearHistory();
239 
245  void SetCommandLinePrintingEnabled(bool print_to_cmd);
246 
252  std::vector<BlamBasicLogMessage> GetHistory();
253 
259  void LogEvent(BlamBasicLogMessage message);
260 
266  void LogEvent(std::string message);
267 
274  void LogEvent(std::string message, BlamLogLevel log_level);
275 
282  void LogEvent(std::string message, TerminalColor color);
283 
289  void AddReceiver(BlamLogReceiver* receiver);
290 
296  void RemoveReceiver(BlamLogReceiver* receiver);
297 };
298 
303 {
311  STRINGS_API std::string GenerateLogLevelPrefix(BlamLogLevel log_level);
312 
321 
328  STRINGS_API void PrintMessageToStdout(std::string message, TerminalColor color);
329 }
BlamBasicLogMessage::timestamp
std::string timestamp
The message timestamp.
Definition: logger.h:164
TerminalColor::BrightBlue
@ BrightBlue
BlamLogVisibility::All
@ All
The message will be shown in all places where log output can be written.
logger.h
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:192
BlamBasicLogger::RemoveReceiver
void RemoveReceiver(BlamLogReceiver *receiver)
Unregisters a receiver from this logger.
Definition: BlamBasicLogger.cpp:107
BlamReportType::ObjectMaterialsDebug
@ ObjectMaterialsDebug
RESERVED Report file for object-specific material messages.
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:156
BlamBasicLogger::BlamBasicLogger
BlamBasicLogger()
Initializes a new logger.
Definition: BlamBasicLogger.cpp:5
string.h
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
BlamReportType::IncidentDebug
@ IncidentDebug
RESERVED
TerminalColor::BrightCyan
@ BrightCyan
unified_logger
BlamBasicLogger * unified_logger
Definition: logger.cpp:3
BlamBasicLogger::GetHistory
std::vector< BlamBasicLogMessage > GetHistory()
Retrieves the log history.
Definition: BlamBasicLogger.cpp:28
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:200
LOGGER_ID_UNIFIED
#define LOGGER_ID_UNIFIED
Definition: logger.h:19
BlamReportType::EffectsDebug
@ EffectsDebug
RESERVED
BlamStrings::Logger::LogEvent
STRINGS_API void LogEvent(BlamBasicLogMessage message)
Logs an event to the logger.
Definition: logger.cpp:27
BlamStrings::Logger::ShutdownLogger
STRINGS_API void ShutdownLogger()
Shuts down the logger.
Definition: logger.cpp:18
BlamBasicLogMessage::Equals
bool Equals(BlamBasicLogMessage other_message)
Checks if the log message is equivalent to another log message.
Definition: BlamBasicLogMessage.cpp:10
BlamReportType::LocalizationDebug
@ LocalizationDebug
RESERVED Report file for string and localization debug messages.
BlamReportType::HSLog
@ HSLog
RESERVED Report file for script-related messages.
STRINGS_API
#define STRINGS_API
Definition: logger.h:12
BlamColor.h
BlamReportType::NetworkingDebug
@ NetworkingDebug
RESERVED Report file for networking debug messages.
BlamLogMessage::color
BlamColor color
The overridden color information. Overrules any severity-based coloring.
Definition: logger.h:146
BlamLogMessage::message
std::string message
The message contents.
Definition: logger.h:141
BlamBasicLogMessage::logger
BlamBasicLogger * logger
The logger that the message originated from.
Definition: logger.h:159
BlamLogVisibility::FileOnly
@ FileOnly
The message will only be written to the log file.
BlamReportType::MultiplayerDebug
@ MultiplayerDebug
RESERVED Report file for multiplayer game debug.
TerminalColor::Magenta
@ Magenta
BlamStrings::Logger::GetLogger
STRINGS_API BlamBasicLogger * GetLogger()
Retrieves the unified logger.
Definition: logger.cpp:5
BlamReportType::AnimationAudioContentDebug
@ AnimationAudioContentDebug
RESERVED
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.
BlamBasicLogMessage::GetMessageLine
std::string GetMessageLine()
Generates a formatted message, ready to be written to any output or log.
Definition: BlamBasicLogMessage.cpp:5
BlamReportType::ObjectsDebug
@ ObjectsDebug
RESERVED Report file for game object debug messages.
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::PrepareLogger
STRINGS_API void PrepareLogger()
Prepares the logger.
Definition: logger.cpp:10
BlamStrings::Logger::RemoveReceiver
STRINGS_API void RemoveReceiver(BlamLogReceiver *receiver)
Unregisters a receiver.
Definition: logger.cpp:77
termcolor.hpp
BlamBasicLogMessage::log_level
BlamLogLevel log_level
The message log level.
Definition: logger.h:160
BlamReportType
BlamReportType
Enumerator containing possible report types.
Definition: logger.h:100
TerminalColor::White
@ White
BlamStrings::Utils::DateTime::GetTimeLogFormat
STRINGS_API std::string GetTimeLogFormat()
Retrieves the current date/time in the following format, for use in the logger: MM....
Definition: datetime.cpp:29
BlamReportType::DebugFull
@ DebugFull
Similar to debug, but includes additional messages that are typically hidden from debug.
BlamLogLevel::Error
@ Error
Indicates an error that could cause engine instability.
TerminalColor::DarkGray
@ DarkGray
BlamReportType::SoundDebug
@ SoundDebug
RESERVED Report file for sound/audio-related debug messages.
TerminalColor::BrightRed
@ BrightRed
BlamLogLevel::None
@ None
Indicates no severity, and is displayed with no formatting.
BlamReportType::LeaderboardDebug
@ LeaderboardDebug
RESERVED Report file for leaderboard debug messages. GAME-SPECIFIC
BlamBasicLogger::AddReceiver
void AddReceiver(BlamLogReceiver *receiver)
Registers a receiver to this logger.
Definition: BlamBasicLogger.cpp:99
BlamReportType::Content
@ Content
RESERVED
TerminalColor::Red
@ Red
BlamBasicLogger::LogEvent
void LogEvent(BlamBasicLogMessage message)
Writes a message to the log.
Definition: BlamBasicLogger.cpp:33
BlamBasicLogMessage::message
std::string message
The message content.
Definition: logger.h:163
BlamReportType::EnvironmentDebug
@ EnvironmentDebug
RESERVED
BlamReportType::TagDebug
@ TagDebug
BlamReport file for all tag related messages.
TerminalColor::BrightGreen
@ BrightGreen
BlamReportType::DesignDebug
@ DesignDebug
RESERVED Report file for level design debug.
BlamBasicLogger::ClearHistory
void ClearHistory()
Clears all log history.
Definition: BlamBasicLogger.cpp:18
BlamReportType::AnimationDebug
@ AnimationDebug
RESERVED Report file for animation debug messages.
BlamReportType::SystemLog
@ SystemLog
RESERVED
logger.h
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
BlamReportType::PlayerRewardsDebug
@ PlayerRewardsDebug
RESERVED Report file for player reward debug messages. GAME-SPECIFIC
BlamLogMessage
Structure to store log message data.
Definition: logger.h:136
BlamReportType::BandwidthDebug
@ BandwidthDebug
RESERVED
BlamStrings::Interface::Logger
Namespace containing functions related to the logger.
Definition: logger.h:302
BlamStrings::Logger::GetHistory
STRINGS_API std::vector< BlamBasicLogMessage > GetHistory()
Retrieves log history.
Definition: logger.cpp:87
BlamBasicLogMessage::has_custom_color
bool has_custom_color
Whether or not the message has a custom terminal color set.
Definition: logger.h:162
BlamLogMessage::timestamp
std::string timestamp
The timestamp of the log message.
Definition: logger.h:140
TerminalColor::Green
@ Green
TerminalColor
TerminalColor
Enumerator listing all possible terminal colors.
Definition: logger.h:35
BlamReportType::AIDebug
@ AIDebug
RESERVED Report file for AI debug messages.
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:211
BlamLogLevel
BlamLogLevel
Enumerator to specify log event severity.
Definition: logger.h:60
BlamBasicLogMessage::color
TerminalColor color
The custom color to assign to the message when printing to stdout.
Definition: logger.h:161
BlamReportType::StreamManagerDebug
@ StreamManagerDebug
RESERVED
BlamBasicLogger::SetCommandLinePrintingEnabled
void SetCommandLinePrintingEnabled(bool print_to_cmd)
Sets whether or not log messages should be written to the standard output.
Definition: BlamBasicLogger.cpp:23
BlamLogLevel::Warning
@ Warning
Indicates a warning message. Not something critical, but something that could cause unexpected behavi...
TerminalColor::BrightMagenta
@ BrightMagenta
BlamReportType::GeometryDebug
@ GeometryDebug
RESERVED Report file for geometry-related messages.
BlamReportType::EnvironmentMaterialsDebug
@ EnvironmentMaterialsDebug
RESERVED Report file for environment-specific material messages.
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