ChimeraTK-ApplicationCore 04.08.00
Loading...
Searching...
No Matches
PyLogger.cc
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Deutsches Elektronen-Synchrotron DESY, MSK, ChimeraTK Project <chimeratk-support@desy.de>
2// SPDX-License-Identifier: LGPL-3.0-or-later
3
4#include "PyLogger.h"
5
6namespace py = pybind11;
7
8namespace ChimeraTK {
9
10 /********************************************************************************************************************/
11
13 // Logger::Severity
14 py::class_<Logger> mPythonLogger(mod, "Logger", py::module_local());
15 // Register the inner enum Value first, so Severity can reference it
16 py::enum_<Logger::Severity::Value>(mPythonLogger, "_SeverityValue", py::module_local(), py::arithmetic())
17 .value("trace", Logger::Severity::Value::trace)
18 .value("debug", Logger::Severity::Value::debug)
19 .value("info", Logger::Severity::Value::info)
20 .value("warning", Logger::Severity::Value::warning)
21 .value("error", Logger::Severity::Value::error)
22 .export_values();
23
24 py::class_<Logger::Severity> mSeverity(mPythonLogger, "Severity", py::module_local());
25 mSeverity
26 .def_property_readonly_static(
27 "trace", [](py::object) { return Logger::Severity(Logger::Severity::Value::trace); })
28 .def_property_readonly_static(
29 "debug", [](py::object) { return Logger::Severity(Logger::Severity::Value::debug); })
30 .def_property_readonly_static(
31 "info", [](py::object) { return Logger::Severity(Logger::Severity::Value::info); })
32 .def_property_readonly_static(
33 "warning", [](py::object) { return Logger::Severity(Logger::Severity::Value::warning); })
34 .def_property_readonly_static(
35 "error", [](py::object) { return Logger::Severity(Logger::Severity::Value::error); })
36 .def("__repr__", [](const Logger::Severity& s) { return std::string(s.toString()); })
37 .def("__eq__", [](const Logger::Severity& a, const Logger::Severity& b) { return a == b; })
38 .def("__ne__", [](const Logger::Severity& a, const Logger::Severity& b) { return a != b; });
39
46 py::class_<PyLoggerStreamProxy>(mPythonLogger, "StreamProxy", py::module_local())
47 .def("log", &PyLoggerStreamProxy::log);
48
52 mod.def("logger",
53 [](Logger::Severity severity, const std::string& context) { return PyLoggerStreamProxy(severity, context); });
54 }
55
56 /********************************************************************************************************************/
57
58} // namespace ChimeraTK
Severity levels used by the Logger.
Definition Logger.h:29
constexpr std::string_view toString() const
Convert Severity into string.
Definition Logger.h:176
static void bind(py::module &mod)
Definition PyLogger.cc:12
PyLoggerStreamProxy.
Definition PyLogger.h:28
void log(const std::string &message)
Definition PyLogger.h:33
InvalidityTracer application module.
module_ module