|
1 #ifndef LOGGING_H |
|
2 #define LOGGING_H |
|
3 |
|
4 #include "string.h" |
|
5 #include <stdio.h> |
|
6 |
|
7 #ifdef __cplusplus |
|
8 extern "C" { |
|
9 #endif |
|
10 |
|
11 /* leave enough space for custom log levels */ |
|
12 #define UCX_LOGGER_ERROR 0x00 |
|
13 #define UCX_LOGGER_WARN 0x10 |
|
14 #define UCX_LOGGER_INFO 0x20 |
|
15 #define UCX_LOGGER_TRACE 0x30 |
|
16 |
|
17 typedef struct { |
|
18 FILE *stream; |
|
19 unsigned int level; |
|
20 } UcxLogger; |
|
21 |
|
22 UcxLogger *ucx_logger_new(FILE *stream, unsigned int level); |
|
23 /* neither provide a free function nor a parameter for an allocator */ |
|
24 |
|
25 void ucx_logger_log(UcxLogger *logger, unsigned int level, sstr_t message); |
|
26 #define ucx_logger_error(l,m) ucx_logger_log(l, UCX_LOGGER_ERROR, m) |
|
27 #define ucx_logger_info(l,m) ucx_logger_log(l, UCX_LOGGER_INFO, m) |
|
28 #define ucx_logger_warn(l,m) ucx_logger_log(l, UCX_LOGGER_WARN, m) |
|
29 #define ucx_logger_trace(l,m) ucx_logger_log(l, UCX_LOGGER_TRACE, m) |
|
30 |
|
31 #ifdef __cplusplus |
|
32 } |
|
33 #endif |
|
34 |
|
35 #endif /* LOGGING_H */ |