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
/* 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 */

@ -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();

@ -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))中的 `设置参数` 章节

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

@ -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 */

@ -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)

@ -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 可以考虑采用KMP及朴素模式匹配字符串提升性能

Loading…
Cancel
Save