forked from gnbdev/opengnb
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgnb_log.h
165 lines (119 loc) · 8.72 KB
/
gnb_log.h
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#ifndef gnb_log_h
#define gnb_log_h
#include <inttypes.h>
#include "gnb_log_type.h"
gnb_log_ctx_t* gnb_log_ctx_create();
#define GNB_LOG_TYPE_STD 0
#define GNB_LOG_TYPE_DEBUG 1
#define GNB_LOG_TYPE_ERROR 2
//log level越大,日志信息越详细,0不输出日志
#define GNB_LOG_LEVEL_NOTSET 0xFF
#define GNB_LOG_LEVEL0 0
#define GNB_LOG_LEVEL1 1
#define GNB_LOG_LEVEL2 2
#define GNB_LOG_LEVEL3 3
/*
level 控制 console file udp 的输出
STD DEBUG ERROR 只是作为一种日志的内置标签,不通过 level 细分控制
要控制 debug 输出,可以让STD 使用小的level,DEBUG用高的level
//GNB_LOG_TYPE_STD level = 1
//GNB_LOG_TYPE_ERROR level = 2
//GNB_LOG_TYPE_DEBUG level = 3
*/
void gnb_logf(gnb_log_ctx_t *log, uint8_t log_type, uint8_t log_id, uint8_t level, const char *format, ...);
int gnb_log_udp_open(gnb_log_ctx_t *log);
int gnb_log_file_rotate(gnb_log_ctx_t *log);
int gnb_log_udp_set_addr4(gnb_log_ctx_t *log, char *ip, uint16_t port4);
int gnb_log_udp_set_addr6(gnb_log_ctx_t *log, char *ip, uint16_t port6);
int gnb_log_udp_set_addr4_string(gnb_log_ctx_t *log, char *sockaddress4_string);
#define GNB_LOG1(log,log_id,format,...) \
do{ \
if ( NULL != log && GNB_LOG_OUTPUT_NONE != log->output_type && \
(log->config_table[log_id].console_level >= GNB_LOG_LEVEL1 || \
log->config_table[log_id].file_level >= GNB_LOG_LEVEL1 || \
log->config_table[log_id].udp_level >= GNB_LOG_LEVEL1) \
){ \
gnb_logf(log,GNB_LOG_TYPE_STD, log_id, GNB_LOG_LEVEL1, format, ##__VA_ARGS__); \
} \
}while(0);
#define GNB_LOG2(log,log_id,format,...) \
do{ \
if ( NULL != log && GNB_LOG_OUTPUT_NONE != log->output_type && \
(log->config_table[log_id].console_level >= GNB_LOG_LEVEL2 || \
log->config_table[log_id].file_level >= GNB_LOG_LEVEL2 || \
log->config_table[log_id].udp_level >= GNB_LOG_LEVEL2) \
){ \
gnb_logf(log,GNB_LOG_TYPE_STD, log_id, GNB_LOG_LEVEL2, format, ##__VA_ARGS__); \
} \
}while(0);
#define GNB_LOG3(log,log_id,format,...) \
do{ \
if ( NULL != log && GNB_LOG_OUTPUT_NONE != log->output_type && \
(log->config_table[log_id].console_level >= GNB_LOG_LEVEL3 || \
log->config_table[log_id].file_level >= GNB_LOG_LEVEL3 || \
log->config_table[log_id].udp_level >= GNB_LOG_LEVEL3) \
){ \
gnb_logf(log,GNB_LOG_TYPE_STD, log_id, GNB_LOG_LEVEL3, format, ##__VA_ARGS__); \
} \
}while(0);
#define GNB_DEBUG1(log,log_id,format,...) \
do{ \
if ( NULL != log && GNB_LOG_OUTPUT_NONE != log->output_type && \
(log->config_table[log_id].console_level >= GNB_LOG_LEVEL1 || \
log->config_table[log_id].file_level >= GNB_LOG_LEVEL1 || \
log->config_table[log_id].udp_level >= GNB_LOG_LEVEL1) \
){ \
gnb_logf(log,GNB_LOG_TYPE_DEBUG, log_id, GNB_LOG_LEVEL1, format, ##__VA_ARGS__); \
} \
}while(0);
#define GNB_DEBUG2(log,log_id,format,...) \
do{ \
if ( NULL != log && GNB_LOG_OUTPUT_NONE != log->output_type && \
(log->config_table[log_id].console_level >= GNB_LOG_LEVEL2 || \
log->config_table[log_id].file_level >= GNB_LOG_LEVEL2 || \
log->config_table[log_id].udp_level >= GNB_LOG_LEVEL2) \
){ \
gnb_logf(log,GNB_LOG_TYPE_DEBUG, log_id, GNB_LOG_LEVEL2, format, ##__VA_ARGS__); \
} \
}while(0);
#define GNB_DEBUG3(log,log_id,format,...) \
do{ \
if ( NULL != log && GNB_LOG_OUTPUT_NONE != log->output_type && \
(log->config_table[log_id].console_level >= GNB_LOG_LEVEL3 || \
log->config_table[log_id].file_level >= GNB_LOG_LEVEL3 || \
log->config_table[log_id].udp_level >= GNB_LOG_LEVEL3) \
){ \
gnb_logf(log,GNB_LOG_TYPE_DEBUG, log_id, GNB_LOG_LEVEL3, format, ##__VA_ARGS__); \
} \
}while(0);
#define GNB_ERROR1(log,log_id,format,...) \
do{ \
if ( NULL != log && GNB_LOG_OUTPUT_NONE != log->output_type && \
(log->config_table[log_id].console_level >= GNB_LOG_LEVEL1 || \
log->config_table[log_id].file_level >= GNB_LOG_LEVEL1 || \
log->config_table[log_id].udp_level >= GNB_LOG_LEVEL1) \
){ \
gnb_logf(log,GNB_LOG_TYPE_ERROR, log_id, GNB_LOG_LEVEL1, format, ##__VA_ARGS__); \
} \
}while(0);
#define GNB_ERROR2(log,log_id,format,...) \
do{ \
if ( NULL != log && GNB_LOG_OUTPUT_NONE != log->output_type && \
(log->config_table[log_id].console_level >= GNB_LOG_LEVEL2 || \
log->config_table[log_id].file_level >= GNB_LOG_LEVEL2 || \
log->config_table[log_id].udp_level >= GNB_LOG_LEVEL2) \
){ \
gnb_logf(log,GNB_LOG_TYPE_ERROR, log_id, GNB_LOG_LEVEL2, format, ##__VA_ARGS__); \
} \
}while(0);
#define GNB_ERROR3(log,log_id,format,...) \
do{ \
if ( NULL != log && GNB_LOG_OUTPUT_NONE != log->output_type && \
(log->config_table[log_id].console_level >= GNB_LOG_LEVEL3 || \
log->config_table[log_id].file_level >= GNB_LOG_LEVEL3 || \
log->config_table[log_id].udp_level >= GNB_LOG_LEVEL3) \
){ \
gnb_logf(log,GNB_LOG_TYPE_ERROR, log_id, GNB_LOG_LEVEL3, format, ##__VA_ARGS__); \
} \
}while(0);
#endif