提交 f5437845 编写于 作者: O openeuler-ci-bot 提交者: Gitee

!3 refactor log

Merge pull request !3 from haozi007/master
# Object files # Object files
*.o *.o
*.pyc
# Libraries # Libraries
*.lib *.lib
...@@ -18,30 +19,12 @@ ...@@ -18,30 +19,12 @@
*.orig *.orig
tags tags
aclocal.m4
ar-lib
autom4te.cache
build build
compile
config.guess
config.h config.h
config.sub
config.log
config.status
depcomp
install-sh
libtool
ltmain.sh
missing missing
**/Makefile.in
**/Makefile **/Makefile
configure
lcrd.spec
lcrd.pc
*.tar.gz *.tar.gz
m4/*
**/.deps **/.deps
**/.dirstamp **/.dirstamp
stamp-h1
...@@ -25,6 +25,7 @@ endif() ...@@ -25,6 +25,7 @@ endif()
set(CMAKE_C_COMPILER "gcc" CACHE PATH "c compiler") set(CMAKE_C_COMPILER "gcc" CACHE PATH "c compiler")
set(CMAKE_C_FLAGS "-fPIC -fstack-protector-all -D_FORTIFY_SOURCE=2 -O2 -Wall -Werror") set(CMAKE_C_FLAGS "-fPIC -fstack-protector-all -D_FORTIFY_SOURCE=2 -O2 -Wall -Werror")
set(CMAKE_SHARED_LINKER_FLAGS "-Wl,-E -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack -Wtrampolines -fPIE -pie -shared -pthread") set(CMAKE_SHARED_LINKER_FLAGS "-Wl,-E -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack -Wtrampolines -fPIE -pie -shared -pthread")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__FILENAME__='\"$(subst ${CMAKE_SOURCE_DIR}/,,$(abspath $<))\"'")
configure_file( configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/config.h.in" "${CMAKE_CURRENT_SOURCE_DIR}/config.h.in"
......
...@@ -39,8 +39,7 @@ const char * const g_clibcni_log_prio_name[] = { ...@@ -39,8 +39,7 @@ const char * const g_clibcni_log_prio_name[] = {
static __thread char *g_clibcni_log_prefix = NULL; static __thread char *g_clibcni_log_prefix = NULL;
static char *g_clibcni_log_vmname = NULL; static char *g_clibcni_log_module = NULL;
static bool g_clibcni_log_quiet = false;
static int g_clibcni_log_level = CLIBCNI_LOG_DEBUG; static int g_clibcni_log_level = CLIBCNI_LOG_DEBUG;
static int g_clibcni_log_driver = LOG_DRIVER_STDOUT; static int g_clibcni_log_driver = LOG_DRIVER_STDOUT;
int g_clibcni_log_fd = -1; int g_clibcni_log_fd = -1;
...@@ -65,10 +64,10 @@ void clibcni_free_log_prefix(void) ...@@ -65,10 +64,10 @@ void clibcni_free_log_prefix(void)
static ssize_t write_nointr(int fd, const void *buf, size_t count); static ssize_t write_nointr(int fd, const void *buf, size_t count);
static void log_append_logfile(const struct clibcni_log_object_metadata *metadata, const char *timestamp, static void do_fifo_log(const struct clibcni_log_object_metadata *metadata, const char *timestamp,
const char *msg); const char *msg);
static void log_append_stderr(const struct clibcni_log_object_metadata *metadata, const char *timestamp, static void do_stderr_log(const struct clibcni_log_object_metadata *metadata, const char *timestamp,
const char *msg); const char *msg);
/* engine change str logdriver to enum */ /* engine change str logdriver to enum */
...@@ -156,7 +155,7 @@ static int do_check_log_configs(const struct clibcni_log_config *log) ...@@ -156,7 +155,7 @@ static int do_check_log_configs(const struct clibcni_log_config *log)
return -1; return -1;
} }
invalid_arg = ((log->file == NULL || strcmp(log->file, "none") == 0) && (g_clibcni_log_driver == LOG_DRIVER_FIFO)); invalid_arg = ((log->file == NULL) && (g_clibcni_log_driver == LOG_DRIVER_FIFO));
if (invalid_arg) { if (invalid_arg) {
COMMAND_ERROR("Must set log file for driver %s", log->driver); COMMAND_ERROR("Must set log file for driver %s", log->driver);
return -1; return -1;
...@@ -185,10 +184,9 @@ int clibcni_log_enable(const struct clibcni_log_config *log) ...@@ -185,10 +184,9 @@ int clibcni_log_enable(const struct clibcni_log_config *log)
return -1; return -1;
} }
free(g_clibcni_log_vmname); free(g_clibcni_log_module);
g_clibcni_log_vmname = util_strdup_s(log->name); g_clibcni_log_module = util_strdup_s(log->name);
g_clibcni_log_quiet = log->quiet;
full_path = util_strdup_s(log->file); full_path = util_strdup_s(log->file);
nret = util_build_dir(full_path); nret = util_build_dir(full_path);
...@@ -213,22 +211,19 @@ out: ...@@ -213,22 +211,19 @@ out:
return nret; return nret;
} }
static int do_log_append_by_driver(const struct clibcni_log_object_metadata *metadata, const char *msg, static int do_log_by_driver(const struct clibcni_log_object_metadata *metadata, const char *msg,
const char *date_time) const char *date_time)
{ {
switch (g_clibcni_log_driver) { switch (g_clibcni_log_driver) {
case LOG_DRIVER_STDOUT: case LOG_DRIVER_STDOUT:
if (g_clibcni_log_quiet) { do_stderr_log(metadata, date_time, msg);
break;
}
log_append_stderr(metadata, date_time, msg);
break; break;
case LOG_DRIVER_FIFO: case LOG_DRIVER_FIFO:
if (g_clibcni_log_fd == -1) { if (g_clibcni_log_fd == -1) {
COMMAND_ERROR("Do not set log file\n"); COMMAND_ERROR("Do not set log file\n");
return -1; return -1;
} }
log_append_logfile(metadata, date_time, msg); do_fifo_log(metadata, date_time, msg);
break; break;
case LOG_DRIVER_NOSET: case LOG_DRIVER_NOSET:
break; break;
...@@ -243,7 +238,7 @@ static char *parse_timespec_to_human() ...@@ -243,7 +238,7 @@ static char *parse_timespec_to_human()
{ {
struct timespec timestamp; struct timespec timestamp;
struct tm ptm = {0}; struct tm ptm = {0};
char date_time[CLIBCNI_LOG_TIME_SIZE] = { 0 }; char date_time[CLIBCNI_LOG_TIME_STR_MAX_LEN] = { 0 };
int nret; int nret;
#define SEC_TO_NSEC 1000000 #define SEC_TO_NSEC 1000000
#define FIRST_YEAR_OF_GMT 1900 #define FIRST_YEAR_OF_GMT 1900
...@@ -258,11 +253,11 @@ static char *parse_timespec_to_human() ...@@ -258,11 +253,11 @@ static char *parse_timespec_to_human()
return NULL; return NULL;
} }
nret = snprintf(date_time, CLIBCNI_LOG_TIME_SIZE, "%04d%02d%02d%02d%02d%02d.%03ld", nret = snprintf(date_time, CLIBCNI_LOG_TIME_STR_MAX_LEN, "%04d%02d%02d%02d%02d%02d.%03ld",
ptm.tm_year + FIRST_YEAR_OF_GMT, ptm.tm_mon + 1, ptm.tm_mday, ptm.tm_hour, ptm.tm_min, ptm.tm_sec, ptm.tm_year + FIRST_YEAR_OF_GMT, ptm.tm_mon + 1, ptm.tm_mday, ptm.tm_hour, ptm.tm_min, ptm.tm_sec,
timestamp.tv_nsec / SEC_TO_NSEC); timestamp.tv_nsec / SEC_TO_NSEC);
if (nret < 0 || nret >= CLIBCNI_LOG_TIME_SIZE) { if (nret < 0 || nret >= CLIBCNI_LOG_TIME_STR_MAX_LEN) {
COMMAND_ERROR("Sprintf failed"); COMMAND_ERROR("Sprintf failed");
return NULL; return NULL;
} }
...@@ -270,8 +265,8 @@ static char *parse_timespec_to_human() ...@@ -270,8 +265,8 @@ static char *parse_timespec_to_human()
return util_strdup_s(date_time); return util_strdup_s(date_time);
} }
/* use to append log to driver */ /* use to add log to driver */
int clibcni_log_append(const struct clibcni_log_object_metadata *metadata, const char *format, ...) int clibcni_log(const struct clibcni_log_object_metadata *metadata, const char *format, ...)
{ {
int rc; int rc;
char msg[MAX_MSG_LENGTH] = { 0 }; char msg[MAX_MSG_LENGTH] = { 0 };
...@@ -294,7 +289,7 @@ int clibcni_log_append(const struct clibcni_log_object_metadata *metadata, const ...@@ -294,7 +289,7 @@ int clibcni_log_append(const struct clibcni_log_object_metadata *metadata, const
goto out; goto out;
} }
ret = do_log_append_by_driver(metadata, msg, date_time); ret = do_log_by_driver(metadata, msg, date_time);
out: out:
free(date_time); free(date_time);
...@@ -318,7 +313,7 @@ static void do_write_log_into_file(int log_fd, char *log_msg, size_t max_len, si ...@@ -318,7 +313,7 @@ static void do_write_log_into_file(int log_fd, char *log_msg, size_t max_len, si
} }
/* log append logfile */ /* log append logfile */
static void log_append_logfile(const struct clibcni_log_object_metadata *metadata, const char *timestamp, static void do_fifo_log(const struct clibcni_log_object_metadata *metadata, const char *timestamp,
const char *msg) const char *msg)
{ {
char log_buffer[CLIBCNI_LOG_BUFFER_SIZE] = { 0 }; char log_buffer[CLIBCNI_LOG_BUFFER_SIZE] = { 0 };
...@@ -335,20 +330,18 @@ static void log_append_logfile(const struct clibcni_log_object_metadata *metadat ...@@ -335,20 +330,18 @@ static void log_append_logfile(const struct clibcni_log_object_metadata *metadat
return; return;
} }
tmp_prefix = g_clibcni_log_prefix ? g_clibcni_log_prefix : g_clibcni_log_vmname; tmp_prefix = g_clibcni_log_prefix ? g_clibcni_log_prefix : g_clibcni_log_module;
if (tmp_prefix != NULL && strlen(tmp_prefix) > MAX_LOG_PREFIX_LENGTH) { if (tmp_prefix != NULL && strlen(tmp_prefix) > MAX_LOG_PREFIX_LENGTH) {
tmp_prefix = tmp_prefix + (strlen(tmp_prefix) - MAX_LOG_PREFIX_LENGTH); tmp_prefix = tmp_prefix + (strlen(tmp_prefix) - MAX_LOG_PREFIX_LENGTH);
} }
nret = snprintf(log_buffer, sizeof(log_buffer), "%15s %s %-8s %s - %s:%s:%d - %s", tmp_prefix ? tmp_prefix : "", nret = snprintf(log_buffer, sizeof(log_buffer), "%15s %s %-8s %s:%s:%d - %s", tmp_prefix ? tmp_prefix : "",
timestamp, g_clibcni_log_prio_name[metadata->level], timestamp, g_clibcni_log_prio_name[metadata->level], metadata->file,
g_clibcni_log_vmname ? g_clibcni_log_vmname : "clibcni", metadata->file,
metadata->func, metadata->line, msg); metadata->func, metadata->line, msg);
if (nret < 0) { if (nret < 0) {
nret = snprintf(log_buffer, sizeof(log_buffer), "%15s %s %-8s %s - %s:%s:%d - %s", nret = snprintf(log_buffer, sizeof(log_buffer), "%15s %s %-8s %s:%s:%d - %s",
tmp_prefix ? tmp_prefix : "", timestamp, g_clibcni_log_prio_name[metadata->level], tmp_prefix ? tmp_prefix : "", timestamp, g_clibcni_log_prio_name[metadata->level],
g_clibcni_log_vmname ? g_clibcni_log_vmname : "clibcni", metadata->file, metadata->file, metadata->func, metadata->line, "Large log message");
metadata->func, metadata->line, "Large log message");
if (nret < 0) { if (nret < 0) {
return; return;
} }
...@@ -359,7 +352,7 @@ static void log_append_logfile(const struct clibcni_log_object_metadata *metadat ...@@ -359,7 +352,7 @@ static void log_append_logfile(const struct clibcni_log_object_metadata *metadat
} }
/* log append stderr */ /* log append stderr */
static void log_append_stderr(const struct clibcni_log_object_metadata *metadata, const char *timestamp, static void do_stderr_log(const struct clibcni_log_object_metadata *metadata, const char *timestamp,
const char *msg) const char *msg)
{ {
char *tmp_prefix = NULL; char *tmp_prefix = NULL;
...@@ -367,12 +360,11 @@ static void log_append_stderr(const struct clibcni_log_object_metadata *metadata ...@@ -367,12 +360,11 @@ static void log_append_stderr(const struct clibcni_log_object_metadata *metadata
return; return;
} }
tmp_prefix = g_clibcni_log_prefix ? g_clibcni_log_prefix : g_clibcni_log_vmname; tmp_prefix = g_clibcni_log_prefix ? g_clibcni_log_prefix : g_clibcni_log_module;
if (tmp_prefix != NULL && strlen(tmp_prefix) > MAX_LOG_PREFIX_LENGTH) { if (tmp_prefix != NULL && strlen(tmp_prefix) > MAX_LOG_PREFIX_LENGTH) {
tmp_prefix = tmp_prefix + (strlen(tmp_prefix) - MAX_LOG_PREFIX_LENGTH); tmp_prefix = tmp_prefix + (strlen(tmp_prefix) - MAX_LOG_PREFIX_LENGTH);
} }
COMMAND_ERROR("%15s %s %-8s ", tmp_prefix ? tmp_prefix : "", timestamp, g_clibcni_log_prio_name[metadata->level]); COMMAND_ERROR("%15s %s %-8s ", tmp_prefix ? tmp_prefix : "", timestamp, g_clibcni_log_prio_name[metadata->level]);
COMMAND_ERROR("%s - ", (g_clibcni_log_vmname ? g_clibcni_log_vmname : "clibcni"));
COMMAND_ERROR("%s:%s:%d - ", metadata->file, metadata->func, metadata->line); COMMAND_ERROR("%s:%s:%d - ", metadata->file, metadata->func, metadata->line);
COMMAND_ERROR("%s\n", msg); COMMAND_ERROR("%s\n", msg);
} }
......
...@@ -26,22 +26,13 @@ extern "C" { ...@@ -26,22 +26,13 @@ extern "C" {
#define O_CLOEXEC 02000000 #define O_CLOEXEC 02000000
#endif #endif
#ifndef F_DUPFD_CLOEXEC
#define F_DUPFD_CLOEXEC 1030
#endif
#define CLIBCNI_LOG_BUFFER_SIZE 4096 #define CLIBCNI_LOG_BUFFER_SIZE 4096
/* We're logging in seconds and nanoseconds. Assuming that the underlying #define CLIBCNI_LOG_TIME_STR_MAX_LEN 21
* datatype is currently at maximum a 64bit integer, we have a date string that
* is of maximum length (2^64 - 1) * 2 = (21 + 21) = 42.
* */
#define CLIBCNI_LOG_TIME_SIZE 42
enum clibcni_log_drivers { enum clibcni_log_drivers {
LOG_DRIVER_STDOUT, LOG_DRIVER_STDOUT,
LOG_DRIVER_FIFO, LOG_DRIVER_FIFO,
LOG_DRIVER_SYSLOG,
LOG_DRIVER_NOSET, LOG_DRIVER_NOSET,
}; };
...@@ -64,14 +55,8 @@ struct clibcni_log_config { ...@@ -64,14 +55,8 @@ struct clibcni_log_config {
const char *priority; const char *priority;
const char *prefix; const char *prefix;
const char *driver; const char *driver;
bool quiet;
}; };
#define CLIBCNI_LOG_LOCINFO_INIT \
{ \
.file = __FILE__, .func = __func__, .line = __LINE__, \
}
/* brief logging event object */ /* brief logging event object */
struct clibcni_log_object_metadata { struct clibcni_log_object_metadata {
/* location information of the logging item */ /* location information of the logging item */
...@@ -88,13 +73,14 @@ void clibcni_set_log_prefix(const char *prefix); ...@@ -88,13 +73,14 @@ void clibcni_set_log_prefix(const char *prefix);
void clibcni_free_log_prefix(void); void clibcni_free_log_prefix(void);
int clibcni_log_append(const struct clibcni_log_object_metadata *metadata, const char *format, ...); int clibcni_log(const struct clibcni_log_object_metadata *metadata, const char *format, ...);
#define COMMON_LOG(loglevel, format, ...) \ #define COMMON_LOG(loglevel, format, ...) \
do { \ do { \
struct clibcni_log_object_metadata meta = CLIBCNI_LOG_LOCINFO_INIT; \ struct clibcni_log_object_metadata meta = { \
meta.level = loglevel; \ .file = __FILENAME__, .func = __func__, .line = __LINE__, .level = loglevel, \
(void)clibcni_log_append(&meta, format, ##__VA_ARGS__); \ }; \
(void)clibcni_log(&meta, format, ##__VA_ARGS__); \
} while (0) } while (0)
#define DEBUG(format, ...) \ #define DEBUG(format, ...) \
...@@ -135,4 +121,4 @@ int clibcni_log_append(const struct clibcni_log_object_metadata *metadata, const ...@@ -135,4 +121,4 @@ int clibcni_log_append(const struct clibcni_log_object_metadata *metadata, const
} }
#endif #endif
#endif /* __LCR_LOG_H */ #endif /* __CLIBCNI_LOG_H */
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册