| #ifndef GSW_LOG_INTERFACE_H | |
| #define GSW_LOG_INTERFACE_H | |
| #include <stdio.h> | |
| #include <stdlib.h> | |
| #include <string.h> | |
| #include <unistd.h> | |
| #include <fcntl.h> | |
| #include <stdarg.h> | |
| #include <dlfcn.h> | |
| #include <syslog.h> | |
| #ifndef LOG_ERR_LEVEL | |
| #define LOG_ERR_LEVEL 3 /* error conditions */ | |
| #endif | |
| #ifndef LOG_WARN_LEVEL | |
| #define LOG_WARN_LEVEL 4 /* warning conditions */ | |
| #endif | |
| #ifndef LOG_INFO_LEVEL | |
| #define LOG_INFO_LEVEL 6 /* informational */ | |
| #endif | |
| #ifndef LOG_DEBUG_LEVEL | |
| #define LOG_DEBUG_LEVEL 7 /* debug-level messages */ | |
| #endif | |
| #ifndef LOG_VERBOSE_LEVEL | |
| #define LOG_VERBOSE_LEVEL 8 | |
| #endif | |
| typedef void (*mbtk_log)(int level, const char *fmt, ...); | |
| extern mbtk_log gsw_fun_ptr_log; | |
| int init_log_func(void); | |
| #define LOG(level, tag, fmt, args...) \ | |
| do { \ | |
| char *file_ptr_1001 = __FILE__; \ | |
| char *ptr_1001 = file_ptr_1001 + strlen(file_ptr_1001) - 1; \ | |
| char line_1001[10] = {0}; \ | |
| sprintf(line_1001, "%d", __LINE__); \ | |
| while(ptr_1001 >= file_ptr_1001 && *ptr_1001){ \ | |
| if(*ptr_1001 == '/') \ | |
| break; \ | |
| ptr_1001--; \ | |
| } \ | |
| if(0 == init_log_func()) {\ | |
| gsw_fun_ptr_log(level, "%s#%s: %s " fmt, ptr_1001 + 1, line_1001, tag, ##args); \ | |
| } else { \ | |
| printf("%s#%s: [%s] %s " fmt "\n", ptr_1001 + 1, line_1001, #level, tag, ##args); \ | |
| } \ | |
| } while(0) | |
| #define LOGV(tag, fmt, args...) LOG(LOG_VERBOSE_LEVEL, tag, fmt, ##args) | |
| #define LOGD(tag, fmt, args...) LOG(LOG_DEBUG_LEVEL, tag, fmt, ##args) | |
| #define LOGI(tag, fmt, args...) LOG(LOG_INFO_LEVEL, tag, fmt, ##args) | |
| #define LOGW(tag, fmt, args...) LOG(LOG_WARN_LEVEL, tag, fmt, ##args) | |
| #define LOGE(tag, fmt, args...) LOG(LOG_ERR_LEVEL, tag, fmt, ##args) | |
| #endif |