Blamite Game Engine - blam!  00296.01.12.21.0102.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 // Warning severities
16 #define WSV_NONE BlamLogLevel::None
17 #define WSV_ERROR BlamLogLevel::Error
18 #define WSV_WARNING BlamLogLevel::Warning
19 #define WSV_SEVERE BlamLogLevel::Severe
20 #define WSV_CRITICAL BlamLogLevel::Severe
21 
22 
27 #define WSV_INFO BlamLogLevel::Input
28 
34 #define WSV_AIERR BlamLogLevel::AiError
35 
36 // Visibility options
37 #define WVIS_NONE BlamLogVisibility::Vis_None
38 #define WVIS_ALL BlamLogVisibility::All
39 #define WVIS_STDOUT_ONLY BlamLogVisibility::StdoutOnly
40 #define WVIS_FILE_ONLY BlamLogVisibility::FileOnly
41 #define WVIS_HTML_ONLY BlamLogVisibility::HTMLOnly
42 #define WVIS_TXT_ONLY BlamLogVisibility::TXTOnly
43 
44 #define MAX_ERRORS_BEFORE_SUPRESSION 5
45 
46 // Helpful macros
47 
53 #define BL_LOGEVT(m) Blam::Logger::LogEvent(m);
54 
60 #define BL_LOGEVT_ST(m, st) Blam::Logger::LogEvent(m, st);
61 
67 #define BL_LOGEVT_SEV(m, st, sev) Blam::Logger::LogEvent(m, st, sev);
68 
74 #define BL_LOGEVT_RGB(m, st, sev, r, g, b) Blam::Logger::LogEvent(m, st, sev, r, g, b);
75 
80 {
81  Vis_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;
114  BlamColor color;
115 
117 
119 };
120 
133 {
134 private:
135  bool log_ready = false;
136  std::string timestamped_log_path;
137 
146  HRESULT WriteLineToText(std::string file_path, BlamLogMessage message);
147 
156  HRESULT WriteLineToHTML(std::string file_path, BlamLogMessage message);
157 
158 public:
159  std::string report_filename;
161 
168  BlamReport(BlamReportType type, std::string filename)
169  {
170  report_filename = filename;
171  report_type = type;
172  }
173 
179  void Initialize();
180 
188  HRESULT WriteLineToFile(BlamLogMessage message);
189 
195  int LogEvent(BlamLogMessage message);
196 
200  void PrintStartupHeader();
201 
207  bool IsReady();
208 
212  void MarkAsReady();
213 };
214 
215 namespace Blam
216 {
220  namespace Logger
221  {
225  namespace Internal
226  {
235  BLAM void PrepareTextLog(std::string report_filename);
236 
245  BLAM void PrepareHTMLLog(std::string report_filename);
246 
254  BLAM std::string PrepareHTMLTemplate(std::string log_title);
255 
266 
270  BLAM void LoadConsoleColors();
271  }
272 
279  namespace Queue
280  {
285  BLAM void Flush();
286 
292  BLAM void AddMessage(BlamLogMessage message);
293 
299  BLAM std::vector<BlamLogMessage>* GetQueue();
300  }
301 
305  BLAM void SetLoggerReady();
306 
315 
324  BLAM std::string GetSeverityCSSClass(BlamLogLevel severity);
325 
330  BLAM void PrepareLogger();
331 
337  BLAM void LogEventAsync(std::string message);
338 
344  BLAM void LogEvent(std::string message);
345 
352  BLAM void LogEvent(std::string message, bool show_timestamp);
353 
360  BLAM void LogEvent(std::string message, BlamReportType report_type);
361 
369  BLAM void LogEvent(std::string message, bool show_timestamp, BlamLogLevel severity);
370 
381  BLAM void LogEvent(std::string message, bool show_timestamp, BlamLogLevel severity, short r, short g, short b);
382 
389  BLAM void LogEvent(std::string message, BlamLogLevel severity);
390 
398  BLAM void LogEvent(std::string message, BlamLogLevel severity, BlamReportType report_type);
399 
407  BLAM void LogEvent(std::string message, BlamLogLevel severity, BlamLogVisibility visibility);
408 
415  BLAM void LogEvent(std::string message, BlamColor color);
416 
422  BLAM void LogEvent(BlamLogMessage message);
423 
430  BLAM void LogEventForce(std::string message, BlamLogLevel severity);
431 
438  BLAM void LogEventForce(std::string message, BlamColor color);
439 
447  BLAM void LogEventForce(std::string message, BlamLogLevel severity, BlamLogVisibility visibility);
448 
456  BLAM void LogEventForce(std::string message, BlamLogLevel severity, BlamReportType report_type);
457 
463  BLAM void LogEventForce(BlamLogMessage message);
464  }
465 }
Blam
Namespace surrounding all major engine components.
Definition: blam_api.h:18
BlamLogMessage::report_type
BlamReportType report_type
The report that the message is intended for.
Definition: logger.h:106
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.
Blam::Logger::Queue::AddMessage
BLAM void AddMessage(BlamLogMessage message)
Adds a message to the queue.
Definition: queue.cpp:46
Blam::Logger::LogEvent
BLAM void LogEvent(std::string message)
Logs a message to the log and/or console.
Definition: aliases.cpp:101
BlamReportType::TagDebug
@ TagDebug
BlamReport file for all tag related messages.
BlamReport
Class representing a report file.
Definition: logger.h:132
BlamLogVisibility::HTMLOnly
@ HTMLOnly
The message will only be written to the log file, if the file is in HTML format.
Blam::Logger::PrepareLogger
BLAM void PrepareLogger()
Prepares the logger for use.
Definition: logger.cpp:16
BlamReportType
BlamReportType
Enumerator containing possible report types.
Definition: logger.h:92
BlamLogVisibility::Vis_None
@ Vis_None
The message will not be visible anywhere.
Blam::Logger::Internal::PrepareTextLog
BLAM void PrepareTextLog(std::string report_filename)
Prepares the plain text log file for writing.
Definition: logger.cpp:116
color
@ color
Definition: render_model.h:12
Blam::Logger::Queue::GetQueue
BLAM std::vector< BlamLogMessage > * GetQueue()
Retrieves the current message queue.
Definition: queue.cpp:168
BlamReport::PrintStartupHeader
void PrintStartupHeader()
Prints the startup header to the log.
Definition: report.cpp:153
BlamLogMessage::visibility
BlamLogVisibility visibility
The visibility of the log message.
Definition: logger.h:116
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
Blam::Logger::LogEventForce
BLAM void LogEventForce(std::string message, BlamLogLevel severity)
Forcibly logs a message to the log and/or console.
Definition: aliases.cpp:218
Blam::Logger::Internal::LoadConsoleColors
BLAM void LoadConsoleColors()
Loads console color configuration.
Definition: logger.cpp:220
BlamReport::MarkAsReady
void MarkAsReady()
Marks the report as ready for use.
Definition: report.cpp:229
globals.h
BlamLogMessage::override_color
bool override_color
Whether or not to override the message color.
Definition: logger.h:113
BlamReport::WriteLineToFile
HRESULT WriteLineToFile(BlamLogMessage message)
Writes a line to the report's log file(s).
Definition: file_logging.cpp:11
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.
Internal
Definition: socket.cpp:16
BlamReport::report_filename
std::string report_filename
Definition: logger.h:159
WSV_NONE
#define WSV_NONE
Macro for 'None' log seveirty. Original pre-enum value was 0.
Definition: logger.h:16
BlamLogVisibility
BlamLogVisibility
Enumerator to specify log event visibility.
Definition: logger.h:79
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:17
BlamReport::IsReady
bool IsReady()
Whether or not the report is ready for use.
Definition: report.cpp:224
BlamReportType::ShadersDebug
@ ShadersDebug
BlamReport file for shader messages.
BlamReport::report_type
BlamReportType report_type
Definition: logger.h:160
BLAM
#define BLAM
Definition: logger.h:12
Blam::Logger::SetLoggerReady
BLAM void SetLoggerReady()
Marks all reports as ready for use.
Definition: logger.cpp:212
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:38
BlamLogVisibility::FileOnly
@ FileOnly
The message will only be written to the log file.
BlamLogMessage::override_duplicate_limit
bool override_duplicate_limit
Whether or not this message should ignore the duplicate message limit.
Definition: logger.h:118
Blam::Logger::Internal::CreateReportViewerPage
BLAM void CreateReportViewerPage()
Prepares the HTML file for the BlamReport Viewer.
Definition: logger.cpp:137
BlamLogMessage::show_timestamp
bool show_timestamp
Whether or not to show the timestamp of the message in the log file.
Definition: logger.h:111
Blam::Logger::GetSeverityCSSClass
BLAM std::string GetSeverityCSSClass(BlamLogLevel severity)
Gets the CSS class name for the specified severity.
Definition: logger.cpp:191
Blam::Logger::Internal::PrepareHTMLLog
BLAM void PrepareHTMLLog(std::string report_filename)
Prepares the HTML log file.
Definition: logger.cpp:53
BlamReport::Initialize
void Initialize()
Initializes the report to ensure it is ready for use.
Definition: report.cpp:14
BlamReport::LogEvent
int LogEvent(BlamLogMessage message)
Writes a message to the log file, console, and/or STDOUT depending on the message.
Definition: report.cpp:98
Blam::Logger::Internal::PrepareHTMLTemplate
BLAM std::string PrepareHTMLTemplate(std::string log_title)
Prepares the contents of the default HTML log template.
Definition: logger.cpp:84
BlamLogMessage
Structure to store log message data.
Definition: logger.h:104
BlamReport::BlamReport
BlamReport(BlamReportType type, std::string filename)
Initializes a new BlamReport.
Definition: logger.h:168
Blam::Logger::LogEventAsync
BLAM void LogEventAsync(std::string message)
Logs a message to the log and/or console asynchronously.
Definition: aliases.cpp:74
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:108
BlamLogMessage::severity
BlamLogLevel severity
The message severity. Defaults to None.
Definition: logger.h:110
Blam::Logger::GetReport
BLAM BlamReport * GetReport(BlamReportType type)
Retrieves report data with the specified type.
Definition: logger.cpp:40