secgateway/Platform/user/ulog/ulog-api/ulog_api.c

70 lines
1.5 KiB
C
Executable File

#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#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);
}