<2023-03-06 周一>
我整理的关于glog
的环境变量设置
我期望的glog
是这样的:在没有设置任何相关环境变量的情况下,它不会产生任何日志文件;当设置了某个环境变量后,可以控制比如日志的输出目录,日志等级等等。如果是windows
平台,日志要支持输出到debugview
。
在写代码时只使用VLOG
和LOG(ERROR)
这两个宏,glog
的初始化代码为:
#define GOOGLE_GLOG_DLL_DECL
#define GLOG_NO_ABBREVIATED_SERVERITIES
#include <glog/logging.h>
class init_glog {
public:
init_glog() {
google::InitGoogleLogging("name");
google::SetLogFilenameExtension(".log");
}
};
static init_glog ig;
之所以要调用SetLogFilenameExtension()
,因为如果在代码里不设置的话没法通过环境变量来配置,这样生成的日志文件后缀名会很错乱。
可以设置环境变量GLOG_log_dir
指向桌面,这样生成日志文件后不用每次都跑到TEMP
下去找日志文件了,直接在桌面上看,一目了然,当然这个环境变量主要还是为了查看方便。此时除了设置了GLOG_log_dir
没有任何其它GLOG_
环境变量,这样就只有LOG(ERROR)
的文件日志和debugview
日志,没有VLOG
的相关日志,这点儿我能接受。
ENV | file | debugview |
---|---|---|
GLOG_v = 3 | Y | N (Y if LOG(ERROR)) |
GLOG_v = 3 GLOG_logtostderr = 1 | N | N (always) |
GLOG_v = 3 GLOG_logtostderr = 0 | Y | N (Y if LOG(ERROR)) |
GLOG_v = 3 GLOG_alsologtostderr = 1 | Y | Y (VLOG and LOG(ERROR) |
GLOG_v = 3 GLOG_alsologtostderr = 0 | Y | N (Y if LOG(ERROR)) |
注:
GLOG_logtostderr
表示:将日志都输出到stderr
中,代表它不会生成文件日志。GLOG_alsologtostderr
表示:除了生成文件日志,还会输出到stderr
中。GLOV_v
的值为3
,表示输出所有VLOG(1)
、VLOG(2)
、VLOG(3)
等等小于3
的日志。- 从上表可看到
GLOG_logtostderr
和GLOG_alsologtostderr
默认值为0
。
此外为了使glog
只输出到debugview
,而不生成文件日志,研究了下glog
的源代码发现:要想在debugview
中输出日志,则GLOG_logtostderr
必须为0
,则此时文件日志也必定生成,所以仅输出debugview
而不生成文件日志似乎glog
在windows
平台上实现不了。