diff --git a/demo/os/linux/easylogger/inc/elog_cfg.h b/demo/os/linux/easylogger/inc/elog_cfg.h index 31e9faf..1bcacc0 100644 --- a/demo/os/linux/easylogger/inc/elog_cfg.h +++ b/demo/os/linux/easylogger/inc/elog_cfg.h @@ -45,6 +45,8 @@ #define ELOG_FILTER_KW_MAX_LEN 16 /* output newline sign */ #define ELOG_NEWLINE_SIGN "\n" +/* enable log color */ +#define ELOG_COLOR_ENABLE /* enable asynchronous output mode */ #define ELOG_ASYNC_OUTPUT_ENABLE /* buffer size for asynchronous output mode */ diff --git a/demo/os/linux/main.c b/demo/os/linux/main.c index ea860d9..df06a1d 100644 --- a/demo/os/linux/main.c +++ b/demo/os/linux/main.c @@ -54,7 +54,9 @@ int main(void) { elog_set_fmt(ELOG_LVL_INFO, ELOG_FMT_LVL | ELOG_FMT_TAG | ELOG_FMT_TIME); elog_set_fmt(ELOG_LVL_DEBUG, ELOG_FMT_ALL & ~ELOG_FMT_FUNC); elog_set_fmt(ELOG_LVL_VERBOSE, ELOG_FMT_ALL & ~ELOG_FMT_FUNC); +#ifdef ELOG_COLOR_ENABLE elog_set_text_color_enabled(true); +#endif /* start EasyLogger */ elog_start(); diff --git a/docs/zh/api/kernel.md b/docs/zh/api/kernel.md index 7425f0f..450c147 100644 --- a/docs/zh/api/kernel.md +++ b/docs/zh/api/kernel.md @@ -284,7 +284,16 @@ void elog_set_text_color_enabled(bool enabled) void elog_flush(void) ``` -### 1.17 日志输出接口 +### 1.17 使能/失能缓冲输出模式 + +``` +void elog_buf_enabled(bool enabled) +``` +|参数 |描述| +|:----- |:----| +|enabled |true: 使能,false: 失能| + +### 1.18 在异步输出模式下获取日志 在异步输出模式下,如果用户没有启动 pthread 库,此时需要启用额外线程来实现日志的异步输出功能。使用此方法即可获取到异步输出缓冲区中的指定长度的日志。如果设定日志长度小于日志缓冲区中已存在日志长度,将只会返回已存在日志长度。 @@ -297,6 +306,15 @@ size_t elog_async_get_log(char *log, size_t size) |log |取出的日志内容| |size |待取出的日志大小| +### 1.19 使能/失能异步输出模式 + +``` +void elog_async_enabled(bool enabled) +``` +|参数 |描述| +|:----- |:----| +|enabled |true: 使能,false: 失能| + ## 2、配置 参照 《EasyLogger 移植说明》([`\docs\zh\port\kernel.md`](https://github.com/armink/EasyLogger/blob/master/docs/zh/port/kernel.md))中的 `设置参数` 章节 diff --git a/docs/zh/port/kernel.md b/docs/zh/port/kernel.md index e5b1511..be6e5cb 100644 --- a/docs/zh/port/kernel.md +++ b/docs/zh/port/kernel.md @@ -174,6 +174,8 @@ const char *elog_port_get_t_info(void) ### 4.9 颜色 +> **注意** :启用颜色功能需先定义 `ELOG_COLOR_ENABLE` 这个宏 + 每个级别的日志均有默认颜色。如果想修改,请先查看在 `elog.c` 的头部定义的各种颜色及字体风格,这里以修改 `VERBOSE` 级别日志来举例: 首先选择前景色为白色,再选择背景色为黑色,最后字体风格为粗体 diff --git a/easylogger/inc/elog.h b/easylogger/inc/elog.h index 13a8e9e..7b44153 100644 --- a/easylogger/inc/elog.h +++ b/easylogger/inc/elog.h @@ -50,7 +50,7 @@ extern "C" { #define ELOG_LVL_TOTAL_NUM 6 /* EasyLogger software version number */ -#define ELOG_SW_VERSION "1.11.22" +#define ELOG_SW_VERSION "1.11.24" /* EasyLogger assert for developer. */ #ifdef ELOG_ASSERT_ENABLE @@ -99,7 +99,11 @@ typedef struct { bool output_lock_enabled; bool output_is_locked_before_enable; bool output_is_locked_before_disable; + +#ifdef ELOG_COLOR_ENABLE bool text_color_enabled; +#endif + }EasyLogger, *EasyLogger_t; /* EasyLogger error code */ diff --git a/easylogger/inc/elog_cfg.h b/easylogger/inc/elog_cfg.h index 2757789..faea605 100644 --- a/easylogger/inc/elog_cfg.h +++ b/easylogger/inc/elog_cfg.h @@ -45,6 +45,9 @@ #define ELOG_FILTER_KW_MAX_LEN 16 /* output newline sign */ #define ELOG_NEWLINE_SIGN "\n" + +/* enable log color */ +#define ELOG_COLOR_ENABLE /* change the some level logs to not default color if you want */ #define ELOG_COLOR_ASSERT (F_MAGENTA B_NULL S_NORMAL) #define ELOG_COLOR_ERROR (F_RED B_NULL S_NORMAL) diff --git a/easylogger/src/elog.c b/easylogger/src/elog.c index 8276efc..e405134 100644 --- a/easylogger/src/elog.c +++ b/easylogger/src/elog.c @@ -55,6 +55,7 @@ #error "Please configure output newline sign (in elog_cfg.h)" #endif +#ifdef ELOG_COLOR_ENABLE /** * CSI(Control Sequence Introducer/Initiator) sign * more information on https://en.wikipedia.org/wiki/ANSI_escape_code @@ -104,6 +105,7 @@ #ifndef ELOG_COLOR_VERBOSE #define ELOG_COLOR_VERBOSE (F_BLUE B_NULL S_NORMAL) #endif +#endif /* ELOG_COLOR_ENABLE */ /* EasyLogger object */ static EasyLogger elog; @@ -120,6 +122,8 @@ static const char *level_output_info[] = { [ELOG_LVL_DEBUG] = "D/", [ELOG_LVL_VERBOSE] = "V/", }; + +#ifdef ELOG_COLOR_ENABLE /* color output info */ static const char *color_output_info[] = { [ELOG_LVL_ASSERT] = ELOG_COLOR_ASSERT, @@ -129,6 +133,7 @@ static const char *color_output_info[] = { [ELOG_LVL_DEBUG] = ELOG_COLOR_DEBUG, [ELOG_LVL_VERBOSE] = ELOG_COLOR_VERBOSE, }; +#endif /* ELOG_COLOR_ENABLE */ static bool get_fmt_enabled(uint8_t level, size_t set); @@ -168,8 +173,12 @@ ElogErrCode elog_init(void) { /* output locked status initialize */ elog.output_is_locked_before_enable = false; elog.output_is_locked_before_disable = false; + +#ifdef ELOG_COLOR_ENABLE /* disable text color by default */ elog_set_text_color_enabled(false); +#endif + /* set level is ELOG_LVL_VERBOSE */ elog_set_filter_lvl(ELOG_LVL_VERBOSE); @@ -205,6 +214,7 @@ void elog_set_output_enabled(bool enabled) { elog.output_enabled = enabled; } +#ifdef ELOG_COLOR_ENABLE /** * set log text color enable or disable * @@ -222,6 +232,7 @@ void elog_set_text_color_enabled(bool enabled) { bool elog_get_text_color_enabled(void) { return elog.text_color_enabled; } +#endif /* ELOG_COLOR_ENABLE */ /** * get output is enable or disable @@ -400,11 +411,15 @@ void elog_output(uint8_t level, const char *tag, const char *file, const char *f va_start(args, format); /* lock output */ elog_output_lock(); + +#ifdef ELOG_COLOR_ENABLE /* add CSI start sign and color info */ if (elog.text_color_enabled) { log_len += elog_strcpy(log_len, log_buf + log_len, CSI_START); log_len += elog_strcpy(log_len, log_buf + log_len, color_output_info[level]); } +#endif + /* package level info */ if (get_fmt_enabled(level, ELOG_FMT_LVL)) { log_len += elog_strcpy(log_len, log_buf + log_len, level_output_info[level]); @@ -473,10 +488,14 @@ void elog_output(uint8_t level, const char *tag, const char *file, const char *f fmt_result = vsnprintf(log_buf + log_len, ELOG_LINE_BUF_SIZE - log_len - newline_len + 1, format, args); va_end(args); + +#ifdef ELOG_COLOR_ENABLE /* add CSI end sign */ if (elog.text_color_enabled) { log_len += elog_strcpy(log_len, log_buf + log_len + fmt_result, CSI_END); } +#endif + /* keyword filter */ if (!strstr(log_buf, elog.filter.keyword)) { //TODO ԿDzKMPģʽƥַ