123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- /*
- * 2D Game Engine
- * Logger.cpp:
- * Based on pikuma.com 2D game engine in C++ and Lua course
- * Copyright (c) 2021 986-Studio. All rights reserved.
- *
- * Created by Manoël Trapier on 11/02/2021.
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdint.h>
- #include <stdarg.h>
- #include <time.h>
- #include <Logger.h>
- typedef struct logData
- {
- char name[7];
- uint8_t colour;
- } logData;
- static logData dataTable[] =
- {
- [LOG_LOG] = { "LOG", 32 },
- [LOG_ERROR] = { "ERROR", 31 },
- [LOG_WARNING] = { "WARN", 33 },
- [LOG_INFO] = { "INFO", 36 },
- [LOG_CRITICAL] = { "CRITIC", 101 },
- [LOG_DEBUG] = { "DEBUG", 35 },
- };
- std::vector<LogEntry> Logger::messages;
- static void printLastLog()
- {
- LogEntry entry = Logger::messages.back();
- char buf[30];
- struct tm *p = localtime(&entry.timestamp);
- int typeColour = dataTable[entry.type].colour;
- const char *typeName = dataTable[entry.type].name;
- strftime(buf, 38, "%d-%b-%Y %H:%M:%S", p);
- fprintf(stderr, "\x1B[%d;1m%-6s | %-20s - ", typeColour, typeName, buf);
- fprintf(stderr, "%s", entry.message);
- fprintf(stderr, "\x1B[0m\n");
- }
- static void addLog(LogType type, const char *message, va_list params)
- {
- LogEntry entry;
- time_t curtime = time(NULL);
- entry.message = (char *)calloc(512, sizeof(char));
- vsnprintf(entry.message, 510, message, params);
- entry.timestamp = curtime;
- entry.type = type;
- Logger::messages.push_back(entry);
- printLastLog();
- }
- void Logger::Log(const char *message, ...)
- {
- va_list list;
- va_start(list, message);
- addLog(LOG_LOG, message, list);
- va_end(list);
- }
- void Logger::Error(const char *message, ...)
- {
- va_list list;
- va_start(list, message);
- addLog(LOG_ERROR, message, list);
- va_end(list);
- }
- void Logger::Warning(const char *message, ...)
- {
- va_list list;
- va_start(list, message);
- addLog(LOG_WARNING, message, list);
- va_end(list);
- }
- void Logger::Info(const char *message, ...)
- {
- va_list list;
- va_start(list, message);
- addLog(LOG_INFO, message, list);
- va_end(list);
- }
- void Logger::Critical(const char *message, ...)
- {
- va_list list;
- va_start(list, message);
- addLog(LOG_CRITICAL, message, list);
- va_end(list);
- }
- void Logger::Debug(const char *message, ...)
- {
- va_list list;
- va_start(list, message);
- addLog(LOG_DEBUG, message, list);
- va_end(list);
- }
|