Merge pull request #4 from ju5t4fun/master

add log text color
pull/3/merge
朱天龙 (Armink) 9 years ago committed by GitHub
commit fe255de88b

@ -0,0 +1,45 @@
#ifndef __COLORS_H__
#define __COLORS_H__
/* use Escape Sequence control the text color
* details please reference http://www.cnblogs.com/clover-toeic/p/4031618.html
*/
#define ESC_START "\e["
#define ESC_END "\e[0m"
//front color
#define F_BLACK "30;"
#define F_RED "31;"
#define F_GREEN "32;"
#define F_YELLOW "33;"
#define F_BLUE "34;"
#define F_MAGENTA "35;"
#define F_CYAN "36;"
#define F_WHITE "37;"
//background color
#define B_BLACK "40;"
#define B_RED "41;"
#define B_GREEN "42;"
#define B_YELLOW "43;"
#define B_BLUE "44;"
#define B_MAGENTA "45;"
#define B_CYAN "46;"
#define B_WHITE "47;"
//show style
#define NORMAL "0m"
#define BOLD "1m"
#define BLINK "5m"
#define NO_BOLD "22m"
//[front color] + [background color] + [show style]
#define COLOR_ASSERT F_MAGENTA B_BLACK NO_BOLD
#define COLOR_ERROR F_RED B_BLACK NO_BOLD
#define COLOR_WARN F_YELLOW B_BLACK NO_BOLD
#define COLOR_INFO F_BLUE B_BLACK NO_BOLD
#define COLOR_DEBUG F_GREEN B_BLACK NO_BOLD
#define COLOR_VERBOSE F_WHITE B_BLACK NO_BOLD
#endif

@ -132,6 +132,8 @@ ElogErrCode elog_init(void);
void elog_start(void); void elog_start(void);
void elog_set_output_enabled(bool enabled); void elog_set_output_enabled(bool enabled);
bool elog_get_output_enabled(void); bool elog_get_output_enabled(void);
void elog_set_text_color_enabled(bool enabled);
bool elog_get_text_color_enabled(void);
void elog_set_fmt(uint8_t level, size_t set); void elog_set_fmt(uint8_t level, size_t set);
void elog_set_filter(uint8_t level, const char *tag, const char *keyword); void elog_set_filter(uint8_t level, const char *tag, const char *keyword);
void elog_set_filter_lvl(uint8_t level); void elog_set_filter_lvl(uint8_t level);

@ -26,6 +26,7 @@
* Created on: 2015-04-28 * Created on: 2015-04-28
*/ */
#include "color.h"
#include <elog.h> #include <elog.h>
#include <string.h> #include <string.h>
#include <stdarg.h> #include <stdarg.h>
@ -48,6 +49,8 @@ static const char *level_output_info[] = {
}; };
/* the output lock enable or disable. default is enable */ /* the output lock enable or disable. default is enable */
static bool output_lock_enabled = true; static bool output_lock_enabled = true;
/* the log text color enable or disable. default is enable */
static bool text_color_enabled = true;
/* the output is locked before enable. */ /* the output is locked before enable. */
static bool output_is_locked_before_enable = false; static bool output_is_locked_before_enable = false;
/* the output is locked before disable. */ /* the output is locked before disable. */
@ -96,6 +99,24 @@ void elog_set_output_enabled(bool enabled) {
elog.output_enabled = enabled; elog.output_enabled = enabled;
} }
/**
* set log text color enable or disable
*
* @param enabled TRUE: enable FALSE:disable
*/
void elog_set_text_color_enabled(bool enabled) {
text_color_enabled = enabled;
}
/**
* get log text color enable status
*
* @return enable or disable
*/
bool elog_get_text_color_enabled(void) {
return text_color_enabled;
}
/** /**
* get output is enable or disable * get output is enable or disable
* *
@ -240,6 +261,37 @@ void elog_output(uint8_t level, const char *tag, const char *file, const char *f
/* lock output */ /* lock output */
output_lock(); output_lock();
/* add Escape Sequence start sign and color info*/
if(text_color_enabled) {
log_len += elog_strcpy(log_len, log_buf + log_len, ESC_START);
char *color = NULL;
switch(level)
{
case ELOG_LVL_ASSERT:
color = (char*) COLOR_ASSERT;
break;
case ELOG_LVL_ERROR:
color = (char*) COLOR_ERROR;
break;
case ELOG_LVL_WARN:
color = (char*) COLOR_WARN;
break;
case ELOG_LVL_INFO:
color = (char*) COLOR_INFO;
break;
case ELOG_LVL_DEBUG:
color = (char*) COLOR_DEBUG;
break;
case ELOG_LVL_VERBOSE:
color = (char*) COLOR_VERBOSE;
break;
default:
;
}
log_len += elog_strcpy(log_len, log_buf + log_len, color);
}
/* 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]);
@ -334,6 +386,11 @@ void elog_output(uint8_t level, const char *tag, const char *file, const char *f
strcpy(log_buf + ELOG_BUF_SIZE - newline_len, ELOG_NEWLINE_SIGN); strcpy(log_buf + ELOG_BUF_SIZE - newline_len, ELOG_NEWLINE_SIGN);
} }
/* add Escape Sequence end sign */
if(text_color_enabled) {
log_len += elog_strcpy(log_len, log_buf + log_len, ESC_END);
}
/* output log */ /* output log */
elog_port_output(log_buf, log_len); elog_port_output(log_buf, log_len);

Loading…
Cancel
Save