#include #include #include #include #include "ulog.h" #include "common_types.h" #include "ulog_api.h" #define LOG_MSG_SZ 1024 ulog_t *ulog_init(const char *module_name, u8 is_print) { ulog_t *log; u32 len = 0; if (NULL == module_name) { fprintf(stderr, "Bad input: module_name is NULL\n"); return NULL; } len = strlen(module_name); if (len > MAX_MODULE_NAME_SZ) { fprintf(stderr, "The length:%d of module_name can't more than %d\n", len, MAX_MODULE_NAME_SZ); return NULL; } log = (ulog_t *)malloc(sizeof(*log)); if (log == NULL) { fprintf(stderr, "Allocating log memory is failure\n"); return NULL; } strncpy(log->module_name, module_name, len); log->module_name[len] = '\0'; int opt = LOG_PERROR |LOG_PID; if (is_print > 0) { opt |= LOG_CONS; } openlog(log->module_name, opt, LOG_USER); return log; } void ulog_close(ulog_t *log) { if (log != NULL) { free(log); } closelog(); } void ulog_record(const ulog_t *log, int level, const char *fmt, ...) { if (log == NULL) { fprintf(stderr, "Log is null\n"); return; } char log_buf[LOG_MSG_SZ]; va_list args; va_start(args, fmt); vsnprintf(log_buf, sizeof(log_buf), fmt, args); va_end(args); syslog(level, MODULE_FMT" %s", log->module_name, log_buf); }