@@ -28,14 +28,11 @@ namespace
2828 using TMatrix = Problem::TMatrix;
2929 using THessian = Problem::THessian;
3030
31- std::shared_ptr<spdlog::logger> python_logger ()
31+ std::shared_ptr<spdlog::logger> python_logger (const spdlog::level::level_enum log_level )
3232 {
3333 auto sink = std::make_shared<spdlog::sinks::ostream_sink_mt>(std::cout, true );
3434 auto logger = std::make_shared<spdlog::logger>(" polysolve" , sink);
35- if (auto default_logger = spdlog::default_logger ())
36- {
37- logger->set_level (default_logger->level ());
38- }
35+ logger->set_level (log_level);
3936 logger->set_pattern (" %v" );
4037 return logger;
4138 }
@@ -210,6 +207,15 @@ PYBIND11_MODULE(polysolve, m)
210207
211208 m.doc () = " Python bindings for PolySolve nonlinear optimization." ;
212209
210+ py::enum_<spdlog::level::level_enum>(m, " LogLevel" )
211+ .value (" trace" , spdlog::level::trace)
212+ .value (" debug" , spdlog::level::debug)
213+ .value (" info" , spdlog::level::info)
214+ .value (" warn" , spdlog::level::warn)
215+ .value (" error" , spdlog::level::err)
216+ .value (" critical" , spdlog::level::critical)
217+ .value (" off" , spdlog::level::off);
218+
213219 py::class_<Problem, PyProblem>(m, " Problem" )
214220 .def (py::init<>())
215221 .def (" value" , [](Problem &problem, const TVector &x) {
@@ -233,10 +239,11 @@ PYBIND11_MODULE(polysolve, m)
233239 const py::dict &solver_params,
234240 const py::dict &linear_solver_params,
235241 const double characteristic_length,
242+ const spdlog::level::level_enum log_level,
236243 const bool strict_validation) {
237244 py::scoped_ostream_redirect stdout_redirect (
238245 std::cout, py::module_::import (" sys" ).attr (" stdout" ));
239- auto logger = python_logger ();
246+ auto logger = python_logger (log_level );
240247
241248 nl::json jsolver_params = solver_params.cast <nl::json>();
242249 nl::json jlinear_solver_params = linear_solver_params.cast <nl::json>();
@@ -259,5 +266,6 @@ PYBIND11_MODULE(polysolve, m)
259266 py::arg (" solver_params" ) = py::dict (),
260267 py::arg (" linear_solver_params" ) = py::dict (),
261268 py::arg (" characteristic_length" ) = 1.0 ,
269+ py::arg (" log_level" ) = spdlog::level::info,
262270 py::arg (" strict_validation" ) = true );
263271}
0 commit comments