在控制台上抑制 ceres 日志记录

Suppress ceres logging on console

下面是 computing covariance in ceres-solver

的虚拟片段
    ceres::Covariance::Options covarianceOptions;
    covarianceOptions.algorithm_type = ceres::SPARSE_QR;
    ceres::Covariance covarianceComputation(covarianceOptions);
    
    if( not covarianceComputation.Compute(paramBlocks, ceresProblem) ) {
        // do stuff
    }
    else {
        // return
    }

ceresProblem不合适时,基于algorithm_type的协方差计算可能会失败。例如,以下错误可能会显示在控制台上。

E0629 13:44:55.121646  9832 covariance_impl.cc:669] Jacobian matrix is rank deficient. Number of columns: 1204 rank: 1118

如何抑制此控制台输出/日志记录? 如何在 ceres 中修改日志级别?


相关问题:Ceres Solver: unable to disable logging (google glog),但没有解决上述问题。

设置以下环境变量将禁止登录 ceres:

GLOG_logtostderr=1
GLOG_stderrthreshold=3
GLOG_minloglevel=3
GLOG_v=-3
  • GLOG_logtostderr:将消息记录到 stderr 而不是日志文件

  • GLOG_stderrthreshold:除日志文件外,还将此级别或更高级别的日志消息复制到标准错误。严重级别 INFO 的数量, WARNING、ERROR 和 FATAL 分别为 0、1、2 和 3。

  • GLOG_minloglevel:记录此级别或更高级别的消息。同样,严重级别 INFO、WARNING、ERROR 和 FATAL 的数量分别为 0、1、 分别为 2 和 3

  • GLOG_v:显示 m 小于或等于此标志值的所有 VLOG(m) 消息。 INFO、WARNING、ERROR 和 FATAL 级别的数字 是 0、-1、-2 和 -3

参考:http://rpg.ifi.uzh.ch/docs/glog.html