blob: cc59c0feb82a0630a44dfd67b9203e218f736d69 [file] [log] [blame]
#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