| 18 | namespace dolfinx_wrappers |
| 19 | { |
| 20 | void log(nb::module_& m) |
| 21 | { |
| 22 | // log level enums |
| 23 | nb::enum_<spdlog::level::level_enum>(m, "LogLevel", nb::is_arithmetic()) |
| 24 | .value("TRACE", spdlog::level::level_enum::trace) |
| 25 | .value("DEBUG", spdlog::level::level_enum::debug) |
| 26 | .value("INFO", spdlog::level::level_enum::info) |
| 27 | .value("WARNING", spdlog::level::level_enum::warn) |
| 28 | .value("ERROR", spdlog::level::level_enum::err) |
| 29 | .value("CRITICAL", spdlog::level::level_enum::critical) |
| 30 | .value("OFF", spdlog::level::level_enum::off); |
| 31 | |
| 32 | m.def( |
| 33 | "set_output_file", |
| 34 | [](const std::string& filename) |
| 35 | { |
| 36 | try |
| 37 | { |
| 38 | auto logger = spdlog::basic_logger_mt("dolfinx", filename.c_str()); |
| 39 | spdlog::set_default_logger(logger); |
| 40 | } |
| 41 | catch (const spdlog::spdlog_ex& ex) |
| 42 | { |
| 43 | std::cout << "Log init failed: " << ex.what() << "\n"; |
| 44 | } |
| 45 | }, |
| 46 | nb::arg("filename")); |
| 47 | |
| 48 | m.def( |
| 49 | "set_thread_name", |
| 50 | [](const std::string& thread_name) |
| 51 | { |
| 52 | std::string fmt |
| 53 | = "[%Y-%m-%d %H:%M:%S.%e] [" + thread_name + "] [%l] %v"; |
| 54 | spdlog::set_pattern(fmt); |
| 55 | }, |
| 56 | nb::arg("thread_name")); |
| 57 | |
| 58 | m.def( |
| 59 | "set_log_level", [](spdlog::level::level_enum level) |
| 60 | { spdlog::set_level(level); }, nb::arg("level")); |
| 61 | m.def("get_log_level", []() { return spdlog::get_level(); }); |
| 62 | m.def( |
| 63 | "log", |
| 64 | [](spdlog::level::level_enum level, const std::string& s) |
| 65 | { |
| 66 | switch (level) |
| 67 | { |
| 68 | case (spdlog::level::level_enum::trace): |
| 69 | spdlog::trace(s.c_str()); |
| 70 | break; |
| 71 | case (spdlog::level::level_enum::debug): |
| 72 | spdlog::debug(s.c_str()); |
| 73 | break; |
| 74 | case (spdlog::level::level_enum::info): |
| 75 | spdlog::info(s.c_str()); |
| 76 | break; |
| 77 | case (spdlog::level::level_enum::warn): |
no test coverage detected