现象:
移植了glog设置FLAGS_logtostderr = true;但是终端输出无颜色;
原因:
glog源码中检测终端是否支持颜色,如果检测不支持,则不显示颜色;glog检测终端是否支持颜色代码在logging.cc文件中,如下:
// Returns true iff terminal supports using colors in output.
static bool TerminalSupportsColor() {
bool term_supports_color = false;
#ifdef OS_WINDOWS
// on Windows TERM variable is usually not set, but the console does
// support colors.
term_supports_color = true;
#else
// On non-Windows platforms, we rely on the TERM variable.
const char* const term = getenv("TERM");
if (term != NULL && term[0] != '\0') {
term_supports_color =
!strcmp(term, "xterm") ||
!strcmp(term, "xterm-color") ||
!strcmp(term, "xterm-256color") ||
!strcmp(term, "screen-256color") ||
!strcmp(term, "konsole") ||
!strcmp(term, "konsole-16color") ||
!strcmp(term, "konsole-256color") ||
!strcmp(term, "screen") ||
!strcmp(term, "linux") ||
!strcmp(term, "cygwin");
}
#endif
return term_supports_color;
}
可以看出glog通过TERM环境变量判断终端是否支持颜色的,通过export | grep TERM命令显示终端TERM为vt120,所以终端不显示颜色;
解决:
此判断函数直接返回true,或将自己的终端TERM加入支持中,编译源码生成新库即可;