1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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
|