console output color

console output color

#


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

  • 字(fg)颜色: [30, 39]
value color
30
31
32 绿
33
34
35
36 深绿
37 白色

bg color

  • 背景(bg)颜色范围: [40, 49]
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__)