1 /*
2  * Copyright (C) 2015-2021 Alibaba Group Holding Limited
3  */
4 
5 #ifndef _DDKC_LOG_H_
6 #define _DDKC_LOG_H_
7 
8 #include <unistd.h>
9 #include <sys/types.h>
10 
11 /*!!!!!!!!!! ONLY loglevel and log format should be modified !!!!!!!!!*/
12 extern int g_ddkc_log_level;
13 extern char ddkc_level_tag[];
14 
15 /*!!!!!!!!!! NEVER TRY to modify the following log defination !!!!!!!!!*/
16 
17 #define DDKC_LOG_LOUD 0
18 #define DDKC_LOG_DEBUG 1
19 #define DDKC_LOG_INFO  2
20 #define DDKC_LOG_WARN  3
21 #define DDKC_LOG_ERROR 4
22 
23 #define ddkc_log(level, format, ...) do { \
24 	if (level >= g_ddkc_log_level) \
25 		printf("<%c><%d> [%s:%d]" format, ddkc_level_tag[level], getpid(), __FUNCTION__, __LINE__, ##__VA_ARGS__); \
26 } while (0)
27 
28 #define ddkc_loud(format, ...)  ddkc_log(DDKC_LOG_LOUD, format, ##__VA_ARGS__)
29 #define ddkc_dbg(format, ...)   ddkc_log(DDKC_LOG_DEBUG, format, ##__VA_ARGS__)
30 #define ddkc_info(format, ...)  ddkc_log(DDKC_LOG_INFO, format, ##__VA_ARGS__)
31 #define ddkc_warn(format, ...)  ddkc_log(DDKC_LOG_WARN, format, ##__VA_ARGS__)
32 #define ddkc_err(format, ...)   ddkc_log(DDKC_LOG_ERROR, format, ##__VA_ARGS__)
33 #define ddkc_assert(cond, str, ...)          \
34     do { if (!(cond)) { printf("[ASSERT] %s/" str, __FUNCTION__, __VA_ARGS__); while (1); } } while (0)
35 
36 #endif //_DDKC_LOG_H_
37