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