ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
logging.cpp
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #include <Logging.h>
9 
11 #include "pybind/docstring.h"
12 
13 namespace cloudViewer {
14 namespace utility {
15 
16 void pybind_logging(py::module& m) {
17  py::native_enum<VerbosityLevel>(m, "VerbosityLevel", "enum.IntEnum",
18  "Enum class for VerbosityLevel.")
19  .value("Error", VerbosityLevel::Error)
20  .value("Warning", VerbosityLevel::Warning)
21  .value("Info", VerbosityLevel::Info)
22  .value("Debug", VerbosityLevel::Debug)
23  .export_values()
24  .finalize();
25 
26  m.def("set_verbosity_level", &SetVerbosityLevel,
27  "Set global verbosity level of CloudViewer",
28  py::arg("verbosity_level"));
30  m, "set_verbosity_level",
31  {{"verbosity_level",
32  "Messages with equal or less than ``verbosity_level`` verbosity "
33  "will be printed."}});
34 
35  m.def("get_verbosity_level", &GetVerbosityLevel,
36  "Get global verbosity level of CloudViewer");
37  docstring::FunctionDocInject(m, "get_verbosity_level");
38 
39  m.def(
40  "reset_print_function",
41  []() {
43  "Resetting default logger to print to terminal.");
45  },
46  "Reset the print function to the default (print to terminal)");
47  docstring::FunctionDocInject(m, "reset_print_function");
48 
49  py::class_<VerbosityContextManager>(m, "VerbosityContextManager",
50  "A context manager to "
51  "temporally change the "
52  "verbosity level of CloudViewer")
53  .def(py::init<VerbosityLevel>(),
54  "Create a VerbosityContextManager with a given VerbosityLevel",
55  "level"_a)
56  .def(
57  "__enter__",
58  [&](VerbosityContextManager& cm) { cm.Enter(); },
59  "Enter the context manager")
60  .def(
61  "__exit__",
62  [&](VerbosityContextManager& cm, pybind11::object exc_type,
63  pybind11::object exc_value,
64  pybind11::object traceback) { cm.Exit(); },
65  "Exit the context manager");
66 }
67 
68 } // namespace utility
69 } // namespace cloudViewer
void ResetPrintFunction()
Reset the print function to the default one (print to console).
Definition: Logging.cpp:77
static Logger & GetInstance()
Get Logger global singleton instance.
Definition: Logging.cpp:25
#define LogInfo(...)
Definition: Logging.h:81
void FunctionDocInject(py::module &pybind_module, const std::string &function_name, const std::unordered_map< std::string, std::string > &map_parameter_body_docs)
Definition: docstring.cpp:76
void SetVerbosityLevel(VerbosityLevel level)
Definition: Logging.cpp:89
void pybind_logging(py::module &m)
Definition: logging.cpp:16
VerbosityLevel GetVerbosityLevel()
Get global verbosity level of CloudViewer.
Definition: Logging.cpp:93
Generic file read and write utility for python interface.