Ceres Solver: невозможно отключить ведение журнала (Google Glog)

Я использую Ceres Solver для проекта, и когда я вызываю 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);

Мне кажется, что регистрация ceres эффективно отключена, а регистрация зависимых библиотек (т.е. SuiteSparse) — нет.

У кого-нибудь есть идеи как отключить этот надоедливый журнал?

5

Решение

Сначала я хотел бы убедиться, что вы используете glog, а не miniglog (проверьте вывод CMake, когда вы создаете ceres), так как эти два не очень хорошо сочетаются. Тогда вы сможете установить уровень многословия, используя флаги командной строки.

Кроме того, я думаю, что SILENT должны быть ограничены, т.е. options.logging_type = ceres::SILENT;

Я использую мини-журнал, и я вижу эти сообщения также.

Редактировать: Этот недавний патч может также помочь вам

2

Другие решения

Попробуйте добавить строку:

#define MAX_LOG_LEVEL -100

в файле logging.h
чуть выше #ifdef MAX_LOG_LEVEL

Убедитесь, что вы установили уровень на -100 а также не 100.
Это прекрасно работает!

0