Elaztek Developer Hub
Blamite Game Engine - blam!  00346.12.11.21.0529.blamite
The core library for the Blamite Game Engine.
logger.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <Windows.h>
4 #include <vector>
5 #include <Strings/components/interface/logger/logger.h>
6 
8 
9 #define DEFAULT_LOG_FILENAME "debug"
10 
11 #ifndef BLAM
12 #define BLAM
13 #endif
14 
15 class BlamReport;
16 
17 // Visibility options
18 #define WVIS_NONE BlamLogVisibility::None
19 #define WVIS_ALL BlamLogVisibility::All
20 #define WVIS_STDOUT_ONLY BlamLogVisibility::StdoutOnly
21 #define WVIS_FILE_ONLY BlamLogVisibility::FileOnly
22 #define WVIS_HTML_ONLY BlamLogVisibility::HTMLOnly
23 #define WVIS_TXT_ONLY BlamLogVisibility::TXTOnly
24 
25 
29 {
30  None,
31  All,
32  StdoutOnly,
33  FileOnly,
34  HTMLOnly,
35  TXTOnly
36 };
37 
41 enum class BlamReportType
42 {
43  Debug,
44  DebugFull,
45  TagDebug,
46  UIDebug,
48 };
49 
54 {
55  HTML,
56  PlainText,
57  Both
58 };
59 
64 {
66 
67  std::string timestamp;
68  std::string message;
69  BlamLogLevel severity = WSV_NONE;
70  bool show_timestamp = true;
71 
72  bool override_color = false;
73  BlamColor color;
74 
76 
77  bool override_duplicate_limit = false;
78 };
79 
80 
87 {
88 private:
89  std::string file_title = "";
90  std::string file_path = "";
92  bool stylized_html_logs = false;
93  BlamReport* report = nullptr;
94 
103  bool PrepareAsHTML();
104 
113  bool PrepareAsPlainText();
114 
122  bool AppendMessageToHTML(BlamLogMessage message);
123 
131  bool AppendMessageToPlainText(BlamLogMessage message);
132 
133 public:
134 
142  BlamReportFile(BlamLogFileFormat file_format, std::string base_dir, BlamReport* _report);
143 
152  BlamReportFile(BlamLogFileFormat file_format, std::string base_dir, BlamReport* _report, bool is_timestamped_file);
153 
159  bool PrepareFile();
160 
168  bool AppendMessage(BlamLogMessage message);
169 };
170 
183 {
184 private:
185  bool stylized_html_logs = false;
186  bool log_ready = false;
188  std::vector<BlamReportFile*> log_files = std::vector<BlamReportFile*>();
189 
190 public:
191  std::string report_filename = "debug";
193 
200  BlamReport(BlamReportType type, std::string filename);
201 
205  void Initialize();
206 
214  bool LogEvent(BlamLogMessage message);
215 
219  void PrintStartupHeader();
220 
226  bool IsReady();
227 
231  void MarkAsReady();
232 };
233 
237 namespace Blam::Logger
238 {
247  namespace Queue
248  {
255  BLAM void Initialize();
256 
260  BLAM void Shutdown();
261 
266  BLAM void Flush();
267 
273  BLAM void AddMessage(BlamLogMessage message);
274 
280  BLAM std::vector<BlamLogMessage>* GetQueue();
281  }
282 
291 
300  BLAM std::string GetLogLevelCSSClass(BlamLogLevel log_level);
301 
311  BLAM void Initialize();
312 
316  BLAM void Shutdown();
317 
323  BLAM void LogEventAsync(std::string message);
324 
330  BLAM void LogEvent(std::string message);
331 
338  BLAM void LogEvent(std::string message, bool show_timestamp);
339 
346  BLAM void LogEvent(std::string message, BlamReportType report_type);
347 
355  BLAM void LogEvent(std::string message, bool show_timestamp, BlamLogLevel severity);
356 
367  BLAM void LogEvent(std::string message, bool show_timestamp, BlamLogLevel severity, short r, short g, short b);
368 
375  BLAM void LogEvent(std::string message, BlamLogLevel severity);
376 
384  BLAM void LogEvent(std::string message, BlamLogLevel severity, BlamReportType report_type);
385 
393  BLAM void LogEvent(std::string message, BlamLogLevel severity, BlamLogVisibility visibility);
394 
401  BLAM void LogEvent(std::string message, BlamColor color);
402 
408  BLAM void LogEvent(BlamLogMessage message);
409 
415  BLAM void LogEventForce(std::string message);
416 
423  BLAM void LogEventForce(std::string message, BlamLogLevel severity);
424 
431  BLAM void LogEventForce(std::string message, BlamColor color);
432 
440  BLAM void LogEventForce(std::string message, BlamLogLevel severity, BlamLogVisibility visibility);
441 
449  BLAM void LogEventForce(std::string message, BlamLogLevel severity, BlamReportType report_type);
450 
456  BLAM void LogEventForce(BlamLogMessage message);
457 }
BlamLogMessage::report_type
BlamReportType report_type
The report that the message is intended for.
Definition: logger.h:65
BlamLogFileFormat
BlamLogFileFormat
Enumerator containing possible log file formats.
Definition: logger.h:53
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.
BlamReportFile::BlamReportFile
BlamReportFile(BlamLogFileFormat file_format, std::string base_dir, BlamReport *_report)
Creates a new BlamReportFile.
Definition: BlamReportFile.cpp:10
BlamLogFileFormat::HTML
@ HTML
The log file will be written with an HTML format.
Blam::Logger::Queue::AddMessage
BLAM void AddMessage(BlamLogMessage message)
Adds a message to the queue.
Definition: queue.cpp:60
Blam::Logger::LogEvent
BLAM void LogEvent(std::string message)
Logs a message to the log and/or console.
Definition: aliases.cpp:141
BlamReportType::TagDebug
@ TagDebug
BlamReport file for all tag related messages.
BlamReport
Class representing a report file.
Definition: logger.h:182
BlamLogVisibility::HTMLOnly
@ HTMLOnly
The message will only be written to the log file, if the file is in HTML format.
BlamReportType
BlamReportType
Enumerator containing possible report types.
Definition: logger.h:41
BlamCommentStyle::None
@ None
The comment will be given the default appearance.
BlamLogFileFormat::PlainText
@ PlainText
The log file will be written in a plain text (.txt) format.
BlamReportFile
Class representing a report file.
Definition: logger.h:86
BlamLogFileFormat::Both
@ Both
The log file will be written as both an HTML document and a plain text document.
Blam::Logger::Queue::GetQueue
BLAM std::vector< BlamLogMessage > * GetQueue()
Retrieves the current message queue.
Definition: queue.cpp:177
BlamReport::PrintStartupHeader
void PrintStartupHeader()
Prints the startup header to the log.
Definition: BlamReport.cpp:100
BlamLogMessage::visibility
BlamLogVisibility visibility
The visibility of the log message.
Definition: logger.h:75
BlamLogMessage::color
BlamColor color
The overridden color information. Overrules any severity-based coloring.
Definition: logger.h:73
BlamLogMessage::message
std::string message
The message contents.
Definition: logger.h:68
Blam::Logger::GetLogLevelCSSClass
BLAM std::string GetLogLevelCSSClass(BlamLogLevel log_level)
Gets the CSS class name for the specified log level.
Definition: logger.cpp:175
BlamReportFile::AppendMessage
bool AppendMessage(BlamLogMessage message)
Appends a message to the log file.
Definition: BlamReportFile.cpp:281
BlamReport::MarkAsReady
void MarkAsReady()
Marks the report as ready for use.
Definition: BlamReport.cpp:176
globals.h
BlamLogMessage::override_color
bool override_color
Whether or not to override the message color.
Definition: logger.h:72
BlamReportFile::PrepareFile
bool PrepareFile()
Prepares the log file for writing.
Definition: BlamReportFile.cpp:259
BlamLogVisibility::All
@ All
The message will be shown in all places where log output can be written.
BlamLogVisibility::StdoutOnly
@ StdoutOnly
The message will only be shown to the in-game console and STDOUT.
BlamReport::report_filename
std::string report_filename
The filename of this report, without the extension.
Definition: logger.h:191
BlamReport::LogEvent
bool LogEvent(BlamLogMessage message)
Writes a message to the log file, console, and/or STDOUT depending on the message.
Definition: BlamReport.cpp:77
BlamLogVisibility
BlamLogVisibility
Enumerator to specify log event visibility.
Definition: logger.h:28
Blam::Logger::Queue::Flush
BLAM void Flush()
Flushes the queue, causing all messages to be written to all places they are configured to do so.
Definition: queue.cpp:36
BlamReport::IsReady
bool IsReady()
Whether or not the report is ready for use.
Definition: BlamReport.cpp:171
Blam::Logger::Queue::Shutdown
BLAM void Shutdown()
Flushes the queue and may later be used to perform other shutdown tasks.
Definition: queue.cpp:31
BlamReportType::ShadersDebug
@ ShadersDebug
BlamReport file for shader messages.
BlamReport::report_type
BlamReportType report_type
The type of this report.
Definition: logger.h:192
BLAM
#define BLAM
Definition: logger.h:12
BlamReportType::Debug
@ Debug
Default report file. Contains all log messages found in other reports, excluding debug_full.
WVIS_ALL
#define WVIS_ALL
Macro for 'All' log visibility. Original pre-enum value was 0.
Definition: logger.h:19
BlamLogVisibility::FileOnly
@ FileOnly
The message will only be written to the log file.
Blam::Logger::Shutdown
BLAM void Shutdown()
Shuts down the logger.
Definition: logger.cpp:151
BlamLogMessage::override_duplicate_limit
bool override_duplicate_limit
Whether or not this message should ignore the duplicate message limit.
Definition: logger.h:77
BlamLogMessage::show_timestamp
bool show_timestamp
Whether or not to show the timestamp of the message in the log file.
Definition: logger.h:70
Blam::Logger::LogEventForce
BLAM void LogEventForce(std::string message)
Forcibly logs a message to the log and/or console.
Definition: aliases.cpp:258
BlamReport::Initialize
void Initialize()
Initializes the report to ensure it is ready for use.
Definition: BlamReport.cpp:18
BlamLogMessage
Structure to store log message data.
Definition: logger.h:63
BlamReport::BlamReport
BlamReport(BlamReportType type, std::string filename)
Initializes a new BlamReport.
Definition: BlamReport.cpp:12
Blam::Logger::LogEventAsync
BLAM void LogEventAsync(std::string message)
Logs a message to the log and/or console asynchronously.
Definition: aliases.cpp:111
BlamReportType::DebugFull
@ DebugFull
Similar to debug, but includes additional messages that would be hidden from debug.
BlamLogMessage::timestamp
std::string timestamp
The timestamp of the log message.
Definition: logger.h:67
Blam::Logger
Namespace containing things related to the Blamite Logger.
Definition: logger.h:237
Blam::Logger::Queue::Initialize
BLAM void Initialize()
Initializes the logger queue.
Definition: queue.cpp:24
Blam::Logger::Initialize
BLAM void Initialize()
Prepares the logger for use.
Definition: logger.cpp:115
BlamLogMessage::severity
BlamLogLevel severity
The message severity. Defaults to None.
Definition: logger.h:69
Blam::Logger::GetReport
BLAM BlamReport * GetReport(BlamReportType type)
Retrieves report data with the specified type.
Definition: logger.cpp:162