in src/config.cc [56:86]
void log(Level level, int line, const std::string& message) {
if (!Py_IsInitialized()) {
// Python logger is unavailable - fallback to console logger
_fallbackLogger->log(level, line, message);
} else {
PyGILState_STATE state = PyGILState_Ensure();
PyObject *type, *value, *traceback;
PyErr_Fetch(&type, &value, &traceback);
try {
switch (level) {
case Logger::LEVEL_DEBUG:
_pyLogger(py::str("DEBUG"), message);
break;
case Logger::LEVEL_INFO:
_pyLogger(py::str("INFO"), message);
break;
case Logger::LEVEL_WARN:
_pyLogger(py::str("WARNING"), message);
break;
case Logger::LEVEL_ERROR:
_pyLogger(py::str("ERROR"), message);
break;
}
} catch (const py::error_already_set& e) {
PyErr_Print();
_fallbackLogger->log(level, line, message);
}
PyErr_Restore(type, value, traceback);
PyGILState_Release(state);
}
}