void log()

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);
        }
    }