diff options
Diffstat (limited to 'src/io/log.c')
-rw-r--r-- | src/io/log.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/io/log.c b/src/io/log.c new file mode 100644 index 0000000..ddf56ff --- /dev/null +++ b/src/io/log.c @@ -0,0 +1,49 @@ +#include <stdarg.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <time.h> + +#include "log.h" + +#ifdef LOG + +void logmsg(LogLevel level, const char* msg, ...) { + + INIT_LOG_BOUNDS + INIT_LOG_BUFFER(buffer) + + time_t now = time(NULL); + struct tm *tm = localtime(&now); + APPEND(buffer, "\x1b[97m%02d:%02d:%02d ", tm->tm_hour, tm->tm_min, tm->tm_sec); + + switch (level) { + case DEBUG: + APPEND(buffer, "\x1b[%dm%s\x1b[97m ", 95, "DEBUG"); + break; + case TRACE: + APPEND(buffer, "\x1b[%dm%s\x1b[97m ", 96, "TRACE"); + break; + case INFO: + APPEND(buffer, "\x1b[%dm%s\x1b[97m ", 92, "INFO"); + break; + case WARN: + APPEND(buffer, "\x1b[%dm%s\x1b[97m ", 93, "WARN"); + break; + case ERROR: + APPEND(buffer, "\x1b[%dm%s\x1b[97m ", 91, "ERROR"); + break; + break; + } + + va_list valist; + va_start(valist, msg); + t += vsnprintf(buffer + t, BUF_LENGTH - t, msg, valist); + va_end(valist); + + APPEND(buffer, "\n"); + + fwrite(&buffer, t, 1, stdout); +} + +#endif
\ No newline at end of file |