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
|
#ifndef COMET_LOG_H
#define COMET_LOG_H
#define COLOR_CLEAR "\x1b[0m"
#define COLOR_DEBUG "\x1b[1;37m"
#define COLOR_INFO "\x1b[1;96m"
#define COLOR_WARN "\x1b[1;33m"
#define COLOR_ERROR "\x1b[1;31m"
#define DEBUG_FORMAT(format, ...) \
"[%s] " COLOR_DEBUG "debug" COLOR_CLEAR ": " format "\n", __func__, ## __VA_ARGS__
#define INFO_FORMAT(format, ...) \
"[%s] " COLOR_INFO "info" COLOR_CLEAR ": " format "\n", __func__, ## __VA_ARGS__
#define WARN_FORMAT(format, ...) \
"[%s] " COLOR_WARN "warning" COLOR_CLEAR ": " format "\n", __func__, ## __VA_ARGS__
#define ERROR_FORMAT(format, ...) \
"[%s] " COLOR_ERROR "error" COLOR_CLEAR ": " format "\n", __func__, ## __VA_ARGS__
#define log_debug(...) log_generic(LOG_DEBUG, DEBUG_FORMAT(__VA_ARGS__))
#define log_info(...) log_generic(LOG_INFO, INFO_FORMAT(__VA_ARGS__))
#define log_warn(...) log_generic(LOG_WARN, WARN_FORMAT(__VA_ARGS__))
#define log_error(...) log_generic(LOG_ERROR, ERROR_FORMAT(__VA_ARGS__))
typedef enum {
LOG_DEBUG,
LOG_INFO,
LOG_WARN,
LOG_ERROR,
} LogLevel;
void log_init(LogLevel level);
void log_generic(LogLevel level, const char *format, ...);
#endif
// vim: ts=4 sw=4 et
|