diff options
author | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2010-06-09 16:54:50 +0000 |
---|---|---|
committer | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2010-06-09 16:54:50 +0000 |
commit | 05b537876bd1ec9fc5f34312835de4ae04e7de68 (patch) | |
tree | cba591ebd3b751d2d8466693b5dd5bcbb398c7ad /bindings/python/wrapper_top.c | |
parent | 80a930cc3775f1f12d1cd04e8836f49c97b60a6c (diff) | |
download | lasso-05b537876bd1ec9fc5f34312835de4ae04e7de68.tar.gz lasso-05b537876bd1ec9fc5f34312835de4ae04e7de68.tar.xz lasso-05b537876bd1ec9fc5f34312835de4ae04e7de68.zip |
Binding python: add GLog handler to redirect logs to Python logger named "lasso"
* fixes #20
Diffstat (limited to 'bindings/python/wrapper_top.c')
-rw-r--r-- | bindings/python/wrapper_top.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/bindings/python/wrapper_top.c b/bindings/python/wrapper_top.c index 1934eaec..99f5fd9f 100644 --- a/bindings/python/wrapper_top.c +++ b/bindings/python/wrapper_top.c @@ -598,3 +598,45 @@ set_object_field(GObject **a_gobject_ptr, PyGObjectPtr *a_pygobject) { *a_gobject_ptr = g_object_ref(a_pygobject->obj); } } + +static PyObject *_logger_object = NULL; + +static PyObject *get_logger_object() { + if (_logger_object == NULL) { + PyObject *logging_module = PyImport_ImportModule("logging"); + _logger_object = PyObject_CallMethod(logging_module, "getLogger", + "s#", "lasso", sizeof("lasso")-1); + Py_DECREF(logging_module); + } + return _logger_object; +} + +static void +lasso_python_log(G_GNUC_UNUSED const char *domain, GLogLevelFlags log_level, const gchar *message, + G_GNUC_UNUSED gpointer user_data) +{ + PyObject *logger_object = get_logger_object(); + char *method = NULL; + + switch (log_level) { + case G_LOG_LEVEL_DEBUG: + method = "debug"; + break; + case G_LOG_LEVEL_INFO: + case G_LOG_LEVEL_MESSAGE: + method = "info"; + break; + case G_LOG_LEVEL_WARNING: + method = "warning"; + break; + case G_LOG_LEVEL_CRITICAL: + method = "error"; + break; + case G_LOG_LEVEL_ERROR: + method = "critical"; + break; + default: + return; + } + PyObject_CallMethod(logger_object, method, "s#s", "%s", 2, message); +} |