Blamite Game Engine - blam!  00285.12.18.20.1411.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 
7 
8 #define DEFAULT_LOG_FILENAME "debug"
9 
10 #ifndef BLAM
11 #define BLAM
12 #endif
13 
14 // Warning severities
15 #define WSV_NONE BlamLogLevel::None
16 #define WSV_ERROR BlamLogLevel::Error
17 #define WSV_WARNING BlamLogLevel::Warning
18 #define WSV_SEVERE BlamLogLevel::Severe
19 #define WSV_CRITICAL BlamLogLevel::Severe
20 
21 
26 #define WSV_INFO BlamLogLevel::Input
27 
33 #define WSV_AIERR BlamLogLevel::AiError
34 
35 // Visibility options
36 #define WVIS_NONE BlamLogVisibility::Vis_None
37 #define WVIS_ALL BlamLogVisibility::All
38 #define WVIS_STDOUT_ONLY BlamLogVisibility::StdoutOnly
39 #define WVIS_FILE_ONLY BlamLogVisibility::FileOnly
40 #define WVIS_HTML_ONLY BlamLogVisibility::HTMLOnly
41 #define WVIS_TXT_ONLY BlamLogVisibility::TXTOnly
42 
43 #define MAX_ERRORS_BEFORE_SUPRESSION 5
44 
45 // Helpful macros
46 
52 #define BL_LOGEVT(m) Blam::Logger::LogEvent(m);
53 
59 #define BL_LOGEVT_ST(m, st) Blam::Logger::LogEvent(m, st);
60 
66 #define BL_LOGEVT_SEV(m, st, sev) Blam::Logger::LogEvent(m, st, sev);
67 
73 #define BL_LOGEVT_RGB(m, st, sev, r, g, b) Blam::Logger::LogEvent(m, st, sev, r, g, b);
74 
78 enum class BlamLogLevel
79 {
80  None,
81  Warning,
82  Error,
83  Severe,
84 
91  Input,
92 
98  AiError
99 };
100 
105 {
106  Vis_None,
107  All,
108  StdoutOnly,
109  FileOnly,
110  HTMLOnly,
111  TXTOnly
112 };
113 
117 enum class BlamReportType
118 {
119  Debug,
120  DebugFull,
121  TagDebug,
122  UIDebug,
123  ShadersDebug
124 };
125 
130 {
132 
133  std::string timestamp;
134  std::string message;
136  bool show_timestamp = true;
137 
138  bool override_color = false;
140 
142 
144 };
145 
158 {
159 private:
160  bool log_ready = false;
161  std::string timestamped_log_path;
162 
171  HRESULT WriteLineToText(std::string file_path, BlamLogMessage message);
172 
181  HRESULT WriteLineToHTML(std::string file_path, BlamLogMessage message);
182 
183 public:
184  std::string report_filename;
186 
193  BlamReport(BlamReportType type, std::string filename)
194  {
195  report_filename = filename;
196  report_type = type;
197  }
198 
204  void Initialize();
205 
213  HRESULT WriteLineToFile(BlamLogMessage message);
214 
220  int LogEvent(BlamLogMessage message);
221 
225  void PrintStartupHeader();
226 
232  bool IsReady();
233 
237  void MarkAsReady();
238 };
239 
240 namespace Blam
241 {
245  namespace Logger
246  {
250  namespace Internal
251  {
260  BLAM void PrepareTextLog(std::string report_filename);
261 
270  BLAM void PrepareHTMLLog(std::string report_filename);
271 
279  BLAM std::string PrepareHTMLTemplate(std::string log_title);
280 
291 
295  BLAM void LoadConsoleColors();
296  }
297 
304  namespace Queue
305  {
310  BLAM void Flush();
311 
317  BLAM void AddMessage(BlamLogMessage message);
318 
324  BLAM std::vector<BlamLogMessage>* GetQueue();
325  }
326 
330  BLAM void SetLoggerReady();
331 
340 
349  BLAM std::string GetSeverityCSSClass(BlamLogLevel severity);
350 
355  BLAM void PrepareLogger();
356 
362  BLAM void LogEventAsync(std::string message);
363 
369  BLAM void LogEvent(std::string message);
370 
377  BLAM void LogEvent(std::string message, bool show_timestamp);
378 
385  BLAM void LogEvent(std::string message, BlamReportType report_type);
386 
394  BLAM void LogEvent(std::string message, bool show_timestamp, BlamLogLevel severity);
395 
406  BLAM void LogEvent(std::string message, bool show_timestamp, BlamLogLevel severity, short r, short g, short b);
407 
414  BLAM void LogEvent(std::string message, BlamLogLevel severity);
415 
423  BLAM void LogEvent(std::string message, BlamLogLevel severity, BlamReportType report_type);
424 
432  BLAM void LogEvent(std::string message, BlamLogLevel severity, BlamLogVisibility visibility);
433 
440  BLAM void LogEvent(std::string message, BlamColor color);
441 
447  BLAM void LogEvent(BlamLogMessage message);
448 
455  BLAM void LogEventForce(std::string message, BlamLogLevel severity);
456 
463  BLAM void LogEventForce(std::string message, BlamColor color);
464 
472  BLAM void LogEventForce(std::string message, BlamLogLevel severity, BlamLogVisibility visibility);
473 
481  BLAM void LogEventForce(std::string message, BlamLogLevel severity, BlamReportType report_type);
482 
488  BLAM void LogEventForce(BlamLogMessage message);
489  }
490 }
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:131
BlamReportType::UIDebug
@ UIDebug
BlamReport file for all UI messages.
BlamLogLevel::Input
@ Input
Indicates that the user has executed a command from console.
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.
BlamLogLevel::Severe
@ Severe
Indicates a severe error that the engine cannot recover from.
BlamReport
Class representing a report file.
Definition: logger.h:157
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
BlamLogLevel::AiError
@ AiError
Placeholder for the future, indicates an error with AI.
BlamReportType
BlamReportType
Enumerator containing possible report types.
Definition: logger.h:117
BlamLogVisibility::Vis_None
@ Vis_None
The message will not be visible anywhere.
BlamLogLevel::Warning
@ Warning
Indicates a warning message. Not something critical, but something that could cause unexpected behavi...
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
BlamLogLevel::Error
@ Error
Indicates an error that could cause engine instability.
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:141
BlamLogMessage::color
BlamColor color
The overridden color information. Overrules any severity-based coloring.
Definition: logger.h:139
BlamLogMessage::message
std::string message
The message contents.
Definition: logger.h:134
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:138
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:184
WSV_NONE
#define WSV_NONE
Macro for 'None' log seveirty. Original pre-enum value was 0.
Definition: logger.h:15
BlamLogVisibility
BlamLogVisibility
Enumerator to specify log event visibility.
Definition: logger.h:104
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
BlamLogLevel
BlamLogLevel
Enumerator to specify log event severity.
Definition: logger.h:78
BlamReportType::ShadersDebug
@ ShadersDebug
BlamReport file for shader messages.
BlamReport::report_type
BlamReportType report_type
Definition: logger.h:185
BLAM
#define BLAM
Definition: logger.h:11
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:37
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:143
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:136
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:129
BlamReport::BlamReport
BlamReport(BlamReportType type, std::string filename)
Initializes a new BlamReport.
Definition: logger.h:193
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:133
BlamColor
Structure representing a color.
Definition: globals.h:20
BlamLogMessage::severity
BlamLogLevel severity
The message severity. Defaults to None.
Definition: logger.h:135
BlamLogLevel::None
@ None
Indicates no severity, and is displayed with no formatting.
Blam::Logger::GetReport
BLAM BlamReport * GetReport(BlamReportType type)
Retrieves report data with the specified type.
Definition: logger.cpp:40