Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #if !defined(LACE_LOG_H)
- #define LACE_LOG_H
- enum log_severity
- {
- Display,
- Info,
- Warning,
- Error,
- Count
- };
- struct lace_log
- {
- // Empty;
- };
- #define LACE_LOG_CATEGORY(name) lace_log name;
- #define LACE_LOG(Category, Severity, Format, ...) \
- LogInternal(__FILE__, __LINE__, #Category, Severity, Format, ##__VA_ARGS__)
- #define COLOR_CODE_RED "\x1B[31m"
- #define COLOR_CODE_YELLOW "\x1B[33m"
- #define COLOR_CODE_WHITE "\x1B[37m"
- #define COLOR_CODE_NORMAL "\x1B[0m"
- static void
- OutputDebugStringWithColor(char *String, lace_log_color Color)
- {
- char *ColorCode;
- if(Color == Red)
- {
- ColorCode = COLOR_CODE_RED;
- }
- else if(Color == Yellow)
- {
- ColorCode = COLOR_CODE_YELLOW;
- }
- else if(Color == White)
- {
- ColorCode = COLOR_CODE_WHITE;
- }
- else
- {
- ColorCode = COLOR_CODE_NORMAL;
- }
- // TODO(zak): On Windows were usually logging to visual studio output and not
- // a normal console. Do a more verbose check here to see what were logging to in the future
- #if !PLATFORM_WINDOWS
- Prepend(String, ColorCode);
- #endif
- Platform.OutputDebugString(String);
- }
- static void
- LogInternal(const char *FilePath, int LineNumber, const char *CategoryName, log_severity Severity, const char *Format, ...)
- {
- lace_log_color Color;
- if(Severity == Info) Color = White;
- else if(Severity == Warning) Color = Red;
- else if(Severity == Error) Color = Yellow;
- else Color = Normal;
- char Formated[1024 * 8];
- va_list Arguments;
- va_start(Arguments, Format);
- rrvsprintf(Formated, Format, Arguments);
- va_end(Arguments);
- char ToLog[1024 * 16];
- if(Severity == Error)
- {
- rrsprintf(ToLog, "%s:%i: %s:%s\n", FilePath, LineNumber, CategoryName, Formated);
- }
- else
- {
- rrsprintf(ToLog, "%s: %s\n", CategoryName, Formated);
- }
- OutputDebugStringWithColor(ToLog, Color);
- Platform.WriteToLog(ToLog);
- if(Severity == Error)
- {
- PopMessageBox("Fatal Error", "");
- PostApplicationExit();
- }
- }
- #endif // LACE_LOG_H
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement