#
ansi code
- 终端字符的颜色是用
esc
开头的转义序列进行控制 是文本模式下的系统显示功能
esc
i.e. \033
(esc
ascii 码十进制 27. 八进制 33)
- 使用
;
分隔以连续设置
code |
effect |
\033[0m |
关闭所有属性 |
\033[1m |
粗体 |
\033[4m |
下划线 |
\033[5m |
闪烁 |
\033[7m |
反显 |
\033[8m |
消隐 |
\033[22m |
非粗体 |
\033[24m |
非下划线 |
\033[25m |
非闪烁 |
\033[27m |
非反显 |
\033[ fg-colorm e.x. \033[30m |
设置前景色 |
\033[ bg-colorm e.x. \033[47m |
设置背景色 |
\033[nA |
光标上移 n 行 |
\03[nB |
光标下移 n 行 |
\033[nC |
光标右移 n 行 |
\033[nD |
光标左移 n 行 |
\033[y;xH |
设置光标位置 (x, y) |
\033[2J |
清屏 |
\033[K |
清除从光标到行尾的内容 |
\033[s |
保存光标位置 |
\033[u |
恢复光标位置 |
\033[?25l |
隐藏光标 |
\033[?25h |
显示光标 |
fg color
value |
color |
30 |
黑 |
31 |
红 |
32 |
绿 |
33 |
黄 |
34 |
蓝 |
35 |
紫 |
36 |
深绿 |
37 |
白色 |
bg color
value |
color |
40 |
黑 |
41 |
红 |
42 |
绿 |
43 |
黄 |
44 |
蓝 |
45 |
紫 |
46 |
深绿 |
47 |
白色 |
example
#define YUIWONGLOGNFTALL(__name, __fmt, __args...) \
fprintf(stdout, \
"\033[30;49m[%s %015ld ALL ][%s] " __fmt " (%s+%d)\n\033[0m", \
yuiwong::LogRealTime().c_str(), ::pthread_self(), __name, ##__args, \
__FILE__, __LINE__)
#define YUIWONGLOGNFTFATA(__name, __fmt, __args...) \
fprintf(stderr, \
"\033[1;31;49m[%s %015ld FATA][%s] " __fmt " (%s+%d)\n\033[0m", \
yuiwong::LogRealTime().c_str(), ::pthread_self(), __name, ##__args, \
__FILE__, __LINE__)
#define YUIWONGLOGNFTERRO(__name, __fmt, __args...) \
fprintf(stderr, \
"\033[31;49m[%s %015ld ERRO][%s] " __fmt " (%s+%d)\n\033[0m", \
yuiwong::LogRealTime().c_str(), ::pthread_self(), __name, ##__args, \
__FILE__, __LINE__)
#define YUIWONGLOGNFTWARN(__name, __fmt, __args...) \
fprintf(stderr, \
"\033[33;49m[%s %015ld WARN][%s] " __fmt " (%s+%d)\n\033[0m", \
yuiwong::LogRealTime().c_str(), ::pthread_self(), __name, ##__args, \
__FILE__, __LINE__)
#define YUIWONGLOGNFTNOTE(__name, __fmt, __args...) \
fprintf(stdout, \
"\033[1;30;49m[%s %015ld NOTE][%s] " __fmt " (%s+%d)\n\033[0m", \
yuiwong::LogRealTime().c_str(), ::pthread_self(), __name, ##__args, \
__FILE__, __LINE__)
#define YUIWONGLOGNFTINFO(__name, __fmt, __args...) \
fprintf(stdout, \
"\033[30;49m[%s %015ld INFO][%s] " __fmt " (%s+%d)\n\033[0m", \
yuiwong::LogRealTime().c_str(), ::pthread_self(), __name, ##__args, \
__FILE__, __LINE__)
#define YUIWONGLOGNFTDEBU(__name, __fmt, __args...) \
fprintf(stdout, \
"\033[36;49m[%s %015ld DEBU][%s] " __fmt " (%s+%d)\n\033[0m", \
yuiwong::LogRealTime().c_str(), ::pthread_self(), __name, ##__args, \
__FILE__, __LINE__)
#define YUIWONGLOGNFTDETA(__name, __fmt, __args...) \
fprintf(stdout, \
"\033[30;49m[%s %015ld DETA][%s] " __fmt " (%s+%d)\n\033[0m", \
yuiwong::LogRealTime().c_str(), ::pthread_self(), __name, ##__args, \
__FILE__, __LINE__)