Skip to content

Commit 12de2de

Browse files
committed
log level
1 parent 78a08c2 commit 12de2de

1 file changed

Lines changed: 14 additions & 6 deletions

File tree

src/polysolve.cpp

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)