1、【增加】ELOG_OUTPUT_ENABLE 宏,日志颜色功能可以以静态方法开启或关闭。启用颜色功能必须定义该宏。

Signed-off-by: armink <armink.ztl@gmail.com>
pull/3/merge
armink 9 years ago
parent 3fee41c061
commit 32791cb60f

@ -45,6 +45,8 @@
#define ELOG_FILTER_KW_MAX_LEN 16 #define ELOG_FILTER_KW_MAX_LEN 16
/* output newline sign */ /* output newline sign */
#define ELOG_NEWLINE_SIGN "\n" #define ELOG_NEWLINE_SIGN "\n"
/* enable log color */
#define ELOG_COLOR_ENABLE
/* enable asynchronous output mode */ /* enable asynchronous output mode */
#define ELOG_ASYNC_OUTPUT_ENABLE #define ELOG_ASYNC_OUTPUT_ENABLE
/* buffer size for asynchronous output mode */ /* buffer size for asynchronous output mode */

@ -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_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_DEBUG, ELOG_FMT_ALL & ~ELOG_FMT_FUNC);
elog_set_fmt(ELOG_LVL_VERBOSE, 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); elog_set_text_color_enabled(true);
#endif
/* start EasyLogger */ /* start EasyLogger */
elog_start(); elog_start();

@ -284,7 +284,16 @@ void elog_set_text_color_enabled(bool enabled)
void elog_flush(void) void elog_flush(void)
``` ```
### 1.17 日志输出接口 ### 1.17 使能/失能缓冲输出模式
```
void elog_buf_enabled(bool enabled)
```
|参数 |描述|
|:----- |:----|
|enabled |true: 使能false: 失能|
### 1.18 在异步输出模式下获取日志
在异步输出模式下,如果用户没有启动 pthread 库,此时需要启用额外线程来实现日志的异步输出功能。使用此方法即可获取到异步输出缓冲区中的指定长度的日志。如果设定日志长度小于日志缓冲区中已存在日志长度,将只会返回已存在日志长度。 在异步输出模式下,如果用户没有启动 pthread 库,此时需要启用额外线程来实现日志的异步输出功能。使用此方法即可获取到异步输出缓冲区中的指定长度的日志。如果设定日志长度小于日志缓冲区中已存在日志长度,将只会返回已存在日志长度。
@ -297,6 +306,15 @@ size_t elog_async_get_log(char *log, size_t size)
|log |取出的日志内容| |log |取出的日志内容|
|size |待取出的日志大小| |size |待取出的日志大小|
### 1.19 使能/失能异步输出模式
```
void elog_async_enabled(bool enabled)
```
|参数 |描述|
|:----- |:----|
|enabled |true: 使能false: 失能|
## 2、配置 ## 2、配置
参照 《EasyLogger 移植说明》([`\docs\zh\port\kernel.md`](https://github.com/armink/EasyLogger/blob/master/docs/zh/port/kernel.md))中的 `设置参数` 章节 参照 《EasyLogger 移植说明》([`\docs\zh\port\kernel.md`](https://github.com/armink/EasyLogger/blob/master/docs/zh/port/kernel.md))中的 `设置参数` 章节

@ -174,6 +174,8 @@ const char *elog_port_get_t_info(void)
### 4.9 颜色 ### 4.9 颜色
> **注意** :启用颜色功能需先定义 `ELOG_COLOR_ENABLE` 这个宏
每个级别的日志均有默认颜色。如果想修改,请先查看在 `elog.c` 的头部定义的各种颜色及字体风格,这里以修改 `VERBOSE` 级别日志来举例: 每个级别的日志均有默认颜色。如果想修改,请先查看在 `elog.c` 的头部定义的各种颜色及字体风格,这里以修改 `VERBOSE` 级别日志来举例:
首先选择前景色为白色,再选择背景色为黑色,最后字体风格为粗体 首先选择前景色为白色,再选择背景色为黑色,最后字体风格为粗体

@ -50,7 +50,7 @@ extern "C" {
#define ELOG_LVL_TOTAL_NUM 6 #define ELOG_LVL_TOTAL_NUM 6
/* EasyLogger software version number */ /* EasyLogger software version number */
#define ELOG_SW_VERSION "1.11.22" #define ELOG_SW_VERSION "1.11.24"
/* EasyLogger assert for developer. */ /* EasyLogger assert for developer. */
#ifdef ELOG_ASSERT_ENABLE #ifdef ELOG_ASSERT_ENABLE
@ -99,7 +99,11 @@ typedef struct {
bool output_lock_enabled; bool output_lock_enabled;
bool output_is_locked_before_enable; bool output_is_locked_before_enable;
bool output_is_locked_before_disable; bool output_is_locked_before_disable;
#ifdef ELOG_COLOR_ENABLE
bool text_color_enabled; bool text_color_enabled;
#endif
}EasyLogger, *EasyLogger_t; }EasyLogger, *EasyLogger_t;
/* EasyLogger error code */ /* EasyLogger error code */

@ -45,6 +45,9 @@
#define ELOG_FILTER_KW_MAX_LEN 16 #define ELOG_FILTER_KW_MAX_LEN 16
/* output newline sign */ /* output newline sign */
#define ELOG_NEWLINE_SIGN "\n" #define ELOG_NEWLINE_SIGN "\n"
/* enable log color */
#define ELOG_COLOR_ENABLE
/* change the some level logs to not default color if you want */ /* 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_ASSERT (F_MAGENTA B_NULL S_NORMAL)
#define ELOG_COLOR_ERROR (F_RED B_NULL S_NORMAL) #define ELOG_COLOR_ERROR (F_RED B_NULL S_NORMAL)

@ -55,6 +55,7 @@
#error "Please configure output newline sign (in elog_cfg.h)" #error "Please configure output newline sign (in elog_cfg.h)"
#endif #endif
#ifdef ELOG_COLOR_ENABLE
/** /**
* CSI(Control Sequence Introducer/Initiator) sign * CSI(Control Sequence Introducer/Initiator) sign
* more information on https://en.wikipedia.org/wiki/ANSI_escape_code * more information on https://en.wikipedia.org/wiki/ANSI_escape_code
@ -104,6 +105,7 @@
#ifndef ELOG_COLOR_VERBOSE #ifndef ELOG_COLOR_VERBOSE
#define ELOG_COLOR_VERBOSE (F_BLUE B_NULL S_NORMAL) #define ELOG_COLOR_VERBOSE (F_BLUE B_NULL S_NORMAL)
#endif #endif
#endif /* ELOG_COLOR_ENABLE */
/* EasyLogger object */ /* EasyLogger object */
static EasyLogger elog; static EasyLogger elog;
@ -120,6 +122,8 @@ static const char *level_output_info[] = {
[ELOG_LVL_DEBUG] = "D/", [ELOG_LVL_DEBUG] = "D/",
[ELOG_LVL_VERBOSE] = "V/", [ELOG_LVL_VERBOSE] = "V/",
}; };
#ifdef ELOG_COLOR_ENABLE
/* color output info */ /* color output info */
static const char *color_output_info[] = { static const char *color_output_info[] = {
[ELOG_LVL_ASSERT] = ELOG_COLOR_ASSERT, [ELOG_LVL_ASSERT] = ELOG_COLOR_ASSERT,
@ -129,6 +133,7 @@ static const char *color_output_info[] = {
[ELOG_LVL_DEBUG] = ELOG_COLOR_DEBUG, [ELOG_LVL_DEBUG] = ELOG_COLOR_DEBUG,
[ELOG_LVL_VERBOSE] = ELOG_COLOR_VERBOSE, [ELOG_LVL_VERBOSE] = ELOG_COLOR_VERBOSE,
}; };
#endif /* ELOG_COLOR_ENABLE */
static bool get_fmt_enabled(uint8_t level, size_t set); static bool get_fmt_enabled(uint8_t level, size_t set);
@ -168,8 +173,12 @@ ElogErrCode elog_init(void) {
/* output locked status initialize */ /* output locked status initialize */
elog.output_is_locked_before_enable = false; elog.output_is_locked_before_enable = false;
elog.output_is_locked_before_disable = false; elog.output_is_locked_before_disable = false;
#ifdef ELOG_COLOR_ENABLE
/* disable text color by default */ /* disable text color by default */
elog_set_text_color_enabled(false); elog_set_text_color_enabled(false);
#endif
/* set level is ELOG_LVL_VERBOSE */ /* set level is ELOG_LVL_VERBOSE */
elog_set_filter_lvl(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; elog.output_enabled = enabled;
} }
#ifdef ELOG_COLOR_ENABLE
/** /**
* set log text color enable or disable * 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) { bool elog_get_text_color_enabled(void) {
return elog.text_color_enabled; return elog.text_color_enabled;
} }
#endif /* ELOG_COLOR_ENABLE */
/** /**
* get output is enable or disable * 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); va_start(args, format);
/* lock output */ /* lock output */
elog_output_lock(); elog_output_lock();
#ifdef ELOG_COLOR_ENABLE
/* add CSI start sign and color info */ /* add CSI start sign and color info */
if (elog.text_color_enabled) { 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, CSI_START);
log_len += elog_strcpy(log_len, log_buf + log_len, color_output_info[level]); log_len += elog_strcpy(log_len, log_buf + log_len, color_output_info[level]);
} }
#endif
/* package level info */ /* package level info */
if (get_fmt_enabled(level, ELOG_FMT_LVL)) { if (get_fmt_enabled(level, ELOG_FMT_LVL)) {
log_len += elog_strcpy(log_len, log_buf + log_len, level_output_info[level]); 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); fmt_result = vsnprintf(log_buf + log_len, ELOG_LINE_BUF_SIZE - log_len - newline_len + 1, format, args);
va_end(args); va_end(args);
#ifdef ELOG_COLOR_ENABLE
/* add CSI end sign */ /* add CSI end sign */
if (elog.text_color_enabled) { if (elog.text_color_enabled) {
log_len += elog_strcpy(log_len, log_buf + log_len + fmt_result, CSI_END); log_len += elog_strcpy(log_len, log_buf + log_len + fmt_result, CSI_END);
} }
#endif
/* keyword filter */ /* keyword filter */
if (!strstr(log_buf, elog.filter.keyword)) { if (!strstr(log_buf, elog.filter.keyword)) {
//TODO 可以考虑采用KMP及朴素模式匹配字符串提升性能 //TODO 可以考虑采用KMP及朴素模式匹配字符串提升性能

Loading…
Cancel
Save