From dcb85398f505481db3a33d35049584b82b1397b9 Mon Sep 17 00:00:00 2001 From: guowenxue <guowenxue@gmail.com> Date: Sat, 17 Jul 2021 23:10:13 +0800 Subject: [PATCH] update booster code for logger system and makefile --- booster/logger.h | 20 ++---- booster/test/makefile | 4 + booster/util_proc.c | 8 +- booster/makefile | 3 + booster/logger.c | 85 ++++++++------------------- booster/test/logger.c | 42 ++++++++++++++ 6 files changed, 85 insertions(+), 77 deletions(-) diff --git a/booster/logger.c b/booster/logger.c index d8f0e92..692635f 100644 --- a/booster/logger.c +++ b/booster/logger.c @@ -20,7 +20,7 @@ /* This library is not thread safe */ static logger_t *logger = NULL; -char *log_str[LOG_LEVEL_MAX + 1] = { "", "F", "E", "W", "N", "D", "I", "T", "M" }; +char *log_str[LOG_LEVEL_MAX + 1] = { "", "E", "W", "N", "D", "I", "M" }; #define LOG_TIME_FMT "%Y-%m-%d %H:%M:%S" @@ -32,8 +32,8 @@ if (sig == SIGHUP) { signal(SIGHUP, log_signal_handler); - log_fatal("SIGHUP received - reopenning log file [%s]", logger->file); - logger_reopen(); + log_err("SIGHUP received - reopenning log file [%s]", logger->file); + log_reopen(); } } @@ -81,65 +81,44 @@ /* log_size unit is KB */ -int logger_init(logger_t *log, char *log_file, int level, int log_size) +int log_open(logger_t *log, char *log_file, int level, int log_size) { - if( !log ) + struct sigaction act; + char *filemode; + + if(!log) { printf("ERROR: Invalid input arguments\n"); return -1; } - if( log_file ) - { - strncpy(log->file, log_file, FILENAME_LEN); - log->flag |= FLAG_LOGGER_FILE; - } - else - { - strncpy(log->file, DBG_LOG_FILE, FILENAME_LEN); - log->flag |= FLAG_LOGGER_CONSOLE; - } - - log->level = level; - log->size = log_size; - /* set static global $logger point to argument $log */ logger = log; - return 0; -} -int logger_open(void) -{ - struct sigaction act; - char *filemode; - - if(!logger) + /* use standard error as output */ + if( !log_file || log_file[0]=='\0' || !strcmp(log_file, LOG_STDERR)) { - printf("ERROR: logger not initialise\n"); - return -1; - } - - log_rollback_size = logger->size <= 0 ? LOG_ROLLBACK_NONE : logger->size*1024; /* Unit KiB */ - - if ('\0' == logger->file[0]) - { - printf("ERROR: Logger filename not set\n"); - return -1; - } - - if (!strcmp(logger->file, DBG_LOG_FILE)) - { - logger->fp = stderr; - log_rollback_size = LOG_ROLLBACK_NONE; + strncpy(logger->file, LOG_STDERR, FILENAME_LEN); logger->flag |= FLAG_LOGGER_CONSOLE; + logger->level = level; + logger->fp = stderr; + + log_rollback_size = LOG_ROLLBACK_NONE; goto OUT; } + strncpy(logger->file, log_file, FILENAME_LEN); + logger->flag |= FLAG_LOGGER_FILE; + logger->level = level; + logger->size = log_size; + + log_rollback_size = log_size <= 0 ? LOG_ROLLBACK_NONE : log_size*1024; /* Unit KiB */ + filemode = (log_rollback_size==LOG_ROLLBACK_NONE) ? "a+" : "w+"; logger->fp = fopen(logger->file, filemode); - if (NULL == logger->fp) + if ( !logger->fp ) { fprintf(stderr, "Open log file \"%s\" in %s failure: %s\n", logger->file, filemode, strerror(errno)); return -2; @@ -152,11 +131,10 @@ OUT: logger_banner("Initialize"); - return 0; } -void logger_close(void) +void log_close(void) { if (!logger || !logger->fp ) return; @@ -172,15 +150,13 @@ return ; } -int logger_reopen(void) +int log_reopen(void) { int rc = 0; char *filemode; if( !logger ) return -1; - - log_rollback_size = logger->size <= 0 ? LOG_ROLLBACK_NONE : logger->size*1024; /* Unit KiB */ if (logger->flag & FLAG_LOGGER_CONSOLE ) { @@ -191,7 +167,7 @@ if (logger->fp) { - logger_close(); + log_close(); filemode = log_rollback_size==LOG_ROLLBACK_NONE ? "a+" : "w+"; logger->fp = fopen(logger->file, filemode); @@ -210,15 +186,6 @@ return rc; } -void logger_term(void) -{ - if(!logger) - return ; - - logger_close(); - - logger = NULL; -} void logger_raw(const char *fmt, ...) { diff --git a/booster/logger.h b/booster/logger.h index 7031761..786bdf8 100644 --- a/booster/logger.h +++ b/booster/logger.h @@ -32,7 +32,7 @@ #define FILENAME_LEN 64 #endif -#define DBG_LOG_FILE "stderr" /* Debug mode log file is console */ +#define LOG_STDERR "stderr" /* Debug mode log file is console */ #define LOG_ROLLBACK_SIZE 512 /* Default rollback log size */ #define LOG_ROLLBACK_NONE 0 /* Set rollback size to 0 will not rollback */ @@ -45,13 +45,11 @@ enum { LOG_LEVEL_DISB = 0, /* Disable "Debug" */ - LOG_LEVEL_FATAL, /* Debug Level "Fatal" */ LOG_LEVEL_ERROR, /* Debug Level "ERROR" */ LOG_LEVEL_WARN, /* Debug Level "warnning" */ LOG_LEVEL_NRML, /* Debug Level "Normal" */ LOG_LEVEL_DEBUG, /* Debug Level "Debug" */ LOG_LEVEL_INFO, /* Debug Level "Information" */ - LOG_LEVEL_TRACE, /* Debug Level "Trace" */ LOG_LEVEL_MAX, }; @@ -76,14 +74,12 @@ extern char *log_str[]; /* log_size unit is KB */ -extern int logger_init(logger_t *logger, char *filename, int level, int log_size); -extern int logger_open(void); -extern void logger_set_time_format(char *time_format); -extern int logger_reopen(void); -extern void logger_close(void); -extern void logger_term(void); -extern void logger_raw(const char *fmt, ...); +extern int log_open(logger_t *logger, char *filename, int level, int log_size); +extern int log_reopen(void); +extern void log_close(void); +/* lowlvel API */ +extern void logger_raw(const char *fmt, ...); extern void logger_min(int level, char *fmt, ...); extern void logger_line(int level, char *file, int line, char *fmt, ...); extern void logger_str(int level, const char *msg); @@ -92,21 +88,17 @@ #define LOG_FILE_LINE /* Log the file and line */ #ifdef LOG_FILE_LINE -#define log_trace(fmt, ...) logger_line(LOG_LEVEL_TRACE, __FILE__, __LINE__, fmt, ##__VA_ARGS__) #define log_info(fmt, ...) logger_line(LOG_LEVEL_INFO, __FILE__, __LINE__, fmt, ##__VA_ARGS__) #define log_dbg(fmt, ...) logger_line(LOG_LEVEL_DEBUG, __FILE__, __LINE__, fmt, ##__VA_ARGS__) #define log_nrml(fmt, ...) logger_line(LOG_LEVEL_NRML, __FILE__, __LINE__, fmt, ##__VA_ARGS__) #define log_warn(fmt, ...) logger_line(LOG_LEVEL_WARN, __FILE__, __LINE__, fmt, ##__VA_ARGS__) #define log_err(fmt, ...) logger_line(LOG_LEVEL_ERROR, __FILE__, __LINE__, fmt, ##__VA_ARGS__) -#define log_fatal(fmt, ...) logger_line(LOG_LEVEL_FATAL, __FILE__, __LINE__, fmt, ##__VA_ARGS__) #else -#define log_trace(fmt, ...) logger_min(LOG_LEVEL_TRACE, fmt, ##__VA_ARGS__) #define log_info(fmt, ...) logger_min(LOG_LEVEL_INFO, fmt, ##__VA_ARGS__) #define log_dbg(fmt, ...) logger_min(LOG_LEVEL_DEBUG, fmt, ##__VA_ARGS__) #define log_nrml(fmt, ...) logger_min(LOG_LEVEL_NRML, fmt, ##__VA_ARGS__) #define log_warn(fmt, ...) logger_min(LOG_LEVEL_WARN, fmt, ##__VA_ARGS__) #define log_err(fmt, ...) logger_min(LOG_LEVEL_ERROR, fmt, ##__VA_ARGS__) -#define log_fatal(fmt, ...) logger_min(LOG_LEVEL_FATAL, fmt, ##__VA_ARGS__) #endif #endif /* ----- #ifndef _LOGGER_H_ ----- */ diff --git a/booster/makefile b/booster/makefile index 608137a..745ae81 100644 --- a/booster/makefile +++ b/booster/makefile @@ -13,3 +13,6 @@ @rm -f *.o @rm -f *.a +distclean: + @make clean + @rm -f cscope.* tags diff --git a/booster/test/logger.c b/booster/test/logger.c new file mode 100644 index 0000000..bed33cb --- /dev/null +++ b/booster/test/logger.c @@ -0,0 +1,42 @@ +/********************************************************************************* + * Copyright: (C) 2021 LingYun IoT System Studio + * All rights reserved. + * + * Filename: logger.c + * Description: This file is logger system sample code. + * + * Version: 1.0.0(17/07/21) + * Author: Guo Wenxue <guowenxue@gmail.com> + * ChangeLog: 1, Release initial version on "17/07/21 15:51:04" + * + ********************************************************************************/ +#include "logger.h" + +#define LOG_FILE "test.log" + +int main (int argc, char **argv) +{ + int rv; + logger_t log; + +#ifdef LOG_FILE + if( log_open(&log, "test.log", LOG_LEVEL_NRML, 512) < 0 ) +#else + if( log_open(&log, LOG_STDERR, LOG_LEVEL_DEBUG, LOG_ROLLBACK_NONE) < 0 ) +#endif + { + fprintf(stderr, "initialise logger system failure, rv=%d\n", rv); + return -1; + } + + log_info("logger level [information] message\n"); + log_dbg ("logger level [ debug ] message\n"); + log_nrml("logger level [ normal ] message\n"); + log_warn("logger level [ warnning ] message\n"); + log_err ("logger level [ error ] message\n"); + + log_close(); + + return 0; +} + diff --git a/booster/test/makefile b/booster/test/makefile index 05bcfa7..1a3718f 100644 --- a/booster/test/makefile +++ b/booster/test/makefile @@ -23,4 +23,8 @@ clean: @rm -f ${BINARIES} + @rm -f *.log +distclean: + @make clean + @rm -f cscope.* tags diff --git a/booster/util_proc.c b/booster/util_proc.c index 700bb65..9474851 100644 --- a/booster/util_proc.c +++ b/booster/util_proc.c @@ -209,7 +209,7 @@ { if (mkdir(ipc_dir, mode) < 0) { - log_fatal("cannot create %s: %s\n", ipc_dir, strerror(errno)); + log_err("cannot create %s: %s\n", ipc_dir, strerror(errno)); return -1; } @@ -229,7 +229,7 @@ } else { - log_fatal("cannot create %s: %s\n", pid_file, strerror(errno)); + log_err("cannot create %s: %s\n", pid_file, strerror(errno)); return -1; } @@ -257,7 +257,7 @@ } else { - log_fatal("Can't open PID record file %s: %s\n", pid_file, strerror(errno)); + log_err("Can't open PID record file %s: %s\n", pid_file, strerror(errno)); return -1; } return pid; @@ -360,7 +360,7 @@ if (record_daemon_pid(pid_file) < 0) { - log_fatal("Record PID to file \"%s\" failure.\n", pid_file); + log_err("Record PID to file \"%s\" failure.\n", pid_file); return -2; } -- Gitblit v1.9.1