Я использую 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) — нет.
У кого-нибудь есть идеи как отключить этот надоедливый журнал?
Сначала я хотел бы убедиться, что вы используете glog, а не miniglog (проверьте вывод CMake, когда вы создаете ceres), так как эти два не очень хорошо сочетаются. Тогда вы сможете установить уровень многословия, используя флаги командной строки.
Кроме того, я думаю, что SILENT
должны быть ограничены, т.е. options.logging_type = ceres::SILENT;
Я использую мини-журнал, и я вижу эти сообщения также.
Редактировать: Этот недавний патч может также помочь вам
Попробуйте добавить строку:
#define MAX_LOG_LEVEL -100
в файле logging.h
чуть выше #ifdef MAX_LOG_LEVEL
Убедитесь, что вы установили уровень на -100 а также не 100.
Это прекрасно работает!