2014-01-28 31 views
5

我使用穀神星求解的一個項目,當我打電話ceres::Solve功能,圖書館開始輸出線像這樣的:穀神星求解:無法禁用日誌記錄(谷歌出入記錄)

iterative_schur_complement_solver.cc:88 No parameter blocks left in the schur complement. 
wall_time.cc:74 

IterativeSchurComplementSolver::Solve 
            Delta Cumulative 
          Total : 0.00001  0.00001 

我試圖禁用這些中間步驟的日誌記錄,但迄今爲止我沒有成功。我打電話給我的類的構造函數這一行:

google::InitGoogleLogging("my-project"); 

當我打電話求解器設置的選項有:

ceres::Solver::Options options; 
options.preconditioner_type = ceres::SCHUR_JACOBI; 
options.linear_solver_type = ceres::ITERATIVE_SCHUR; 
options.logging_type = SILENT; 
options.minimizer_progress_to_stdout = false; 
ceres::Solver::Summary summary; 
ceres::Solve(options, &problem, &summary); 

這在我看來,穀神星日誌記錄有效地禁止,但記錄其依賴庫(即:SuiteSparse)不是。

有人有關於如何禁用這個惱人的日誌的想法嗎?

回答

2

我會首先驗證您使用glog而不是miniglog(當您構建ceres時檢查CMake的輸出),因爲兩者混合不好。然後,您應該可以使用glog的command line flags來設置詳細程度。

而且,我認爲SILENT應該作用域,即options.logging_type = ceres::SILENT;

我使用miniglog,我也看到這些消息。

編輯:This recent patch也可能會幫助你。

+2

有沒有辦法使用miniglog時禁用這些消息? – resistancefm

0

嘗試添加一行:

#define MAX_LOG_LEVEL -100 
在文件 logging.h

略高於#ifdef MAX_LOG_LEVEL

確保您級別設置爲-100不是100
這很好用!