Libevhtp  1.2.13
log.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <stdio.h>
4 #include <errno.h>
5 #include <string.h>
6 
7 #define __FILENAME__ \
8  (strrchr(__FILE__, '/') ? \
9  strrchr(__FILE__, '/') + 1 : __FILE__)
10 
11 #define clean_errno() \
12  (errno == 0 ? "None" : strerror(errno))
13 
14 #define __log_debug_color(X) "[\x1b[1;36m" X "\x1b[0;39m]"
15 #define __log_error_color(X) "[\x1b[1;31m" X "\x1b[0;39m]"
16 #define __log_warn_color(X) "[\x1b[1;33m" X "\x1b[0;39m]"
17 #define __log_info_color(X) "[\x1b[32m" X "\x1b[0;39m]"
18 #define __log_func_color(X) "\x1b[33m" X "\x1b[39m"
19 #define __log_args_color(X) "\x1b[94m" X "\x1b[39m"
20 #define __log_errno_color(X) "\x1b[35m" X "\x1b[39m"
21 
22 
23 #if !defined(EVHTP_DEBUG)
24 /* compile with all debug messages removed */
25 #define log_debug(M, ...)
26 #else
27 #define log_debug(M, ...) \
28  fprintf(stderr, __log_debug_color("DEBUG") " " \
29  __log_func_color("%s:%-9d") \
30  __log_args_color(M) \
31  "\n", \
32  __FILENAME__, __LINE__, ## __VA_ARGS__)
33 #endif
34 
35 #define log_error(M, ...) \
36  fprintf(stderr, __log_error_color("ERROR") " " \
37  __log_func_color("%s:%-9d") \
38  __log_args_color(M) \
39  " :: " \
40  __log_errno_color("(errno: %s)") \
41  "\n", \
42  __FILENAME__, __LINE__, ## __VA_ARGS__, clean_errno())
43 
44 
45 #define log_warn(M, ...) \
46  fprintf(stderr, __log_warn_color("WARN") " " \
47  __log_func_color("%s:%-9d") \
48  __log_args_color(M) \
49  " :: " \
50  __log_errno_color("(errno: %s)") \
51  "\n", \
52  __FILENAME__, __LINE__, ## __VA_ARGS__, clean_errno())
53 
54 #define log_info(M, ...) \
55  fprintf(stderr, __log_info_color("INFO") " " \
56  __log_func_color("%4s:%-9d") \
57  __log_args_color(M) "\n", \
58  __FILENAME__, __LINE__, ## __VA_ARGS__)