-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;
//...
}