-dir_log是glog一个内置的gflag,如果不设置的话,默认的日志文件会生成在/tmp目录下。
./mytest -dir_log=./logs
但是发现设置了以后,运行没有效果,文件还是生成在了/tmp下。main函数源码如下:
int main(int argc, char *argv[]) {
glog::InitLogging("mytest");
std::cout << FLAGS_log_dir << std::endl;
gflags::ParseCommandLineFlags(&argc, &argv, true);
//...
}
在源码里打印了FLGAS_log_dir发现,总是打印/tmp。
想了一下发现,FLAGS_log_dir是来自gflag的解析结果的,所以应该在InitLogging之前就ParseCommandLineFlags。改成如下就成功设置了log_dir:
int main(int argc, char *argv[]) {
gflags::ParseCommandLineFlags(&argc, &argv, true);
glog::InitLogging("carsim");
std::cout << FLAGS_log_dir << std::endl;
//...
}