kuuko pushed a commit to branch master.

http://git.enlightenment.org/bindings/python/python-efl.git/commit/?id=6a0e8a716669e65e7ce910ee5a18f3a1eaf202d8

commit 6a0e8a716669e65e7ce910ee5a18f3a1eaf202d8
Author: Kai Huuhko <[email protected]>
Date:   Mon Oct 28 16:54:23 2013 +0200

    Fix customization of logger class when using Py2
---
 efl/utils/logger.pyx | 21 +++++++++++++--------
 1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/efl/utils/logger.pyx b/efl/utils/logger.pyx
index 515c566..2866a51 100644
--- a/efl/utils/logger.pyx
+++ b/efl/utils/logger.pyx
@@ -54,19 +54,24 @@ cdef void py_eina_log_print_cb(const_Eina_Log_Domain *d,
 
 eina_log_print_cb_set(py_eina_log_print_cb, NULL)
 
+def setLevel(self, lvl):
+    cname = self.name
+    if isinstance(cname, unicode): cname = PyUnicode_AsUTF8String(cname)
+    eina_log_domain_level_set(cname, log_levels.index(lvl))
+    logging.Logger.setLevel(self, lvl)
+
 class PyEFLLogger(logging.Logger):
+
     def __init__(self, name):
         cname = name
         if isinstance(cname, unicode): cname = PyUnicode_AsUTF8String(cname)
         self.eina_log_domain = eina_log_domain_register(cname, NULL)
         loggers[name] = self
         logging.Logger.__init__(self, name)
-
-    def setLevel(self, lvl):
-        cname = self.name
-        if isinstance(cname, unicode): cname = PyUnicode_AsUTF8String(cname)
-        eina_log_domain_level_set(cname, log_levels.index(lvl))
-        logging.Logger.setLevel(self, lvl)
+        if PY_VERSION_HEX < 0x03000000:
+            self.setLevel = types.MethodType(setLevel, self, type(self))
+        else:
+            self.setLevel = types.MethodType(setLevel, self)
 
 cdef object add_logger(object name):
     logging.setLoggerClass(PyEFLLogger)
@@ -82,9 +87,9 @@ cdef object add_logger(object name):
         lvl = log.getEffectiveLevel()
         eina_log_domain_level_set(cname, log_levels.index(lvl))
         if PY_VERSION_HEX < 0x03000000:
-            log.setLevel = types.MethodType(PyEFLLogger.setLevel, log, 
PyEFLLogger)
+            log.setLevel = types.MethodType(setLevel, log, type(log))
         else:
-            log.setLevel = types.MethodType(PyEFLLogger.setLevel, log)
+            log.setLevel = types.MethodType(setLevel, log)
     else:
         log.propagate = True
         log.setLevel(logging.WARNING)

-- 


Reply via email to