aboutsummaryrefslogtreecommitdiff
path: root/src/log.h
blob: ac5cdffc2186b1563c0d990a864b158b9b913acd (plain)
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