parent
47be89c8ea
commit
19e7d11f61
|
@ -34,7 +34,7 @@ cdef int PY_EFL_EO_LOG_DOMAIN = add_logger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def init():
|
def init():
|
||||||
EINA_LOG_DOM_INFO(PY_EFL_EO_LOG_DOMAIN, "Initializing %s", <char *>__name__)
|
EINA_LOG_DOM_INFO(PY_EFL_EO_LOG_DOMAIN, "Initializing efl.eo", NULL)
|
||||||
return eo_init()
|
return eo_init()
|
||||||
|
|
||||||
def shutdown():
|
def shutdown():
|
||||||
|
@ -65,7 +65,10 @@ cdef void _object_mapping_register(char *name, object cls) except *:
|
||||||
if eina_hash_find(object_mapping, name) != NULL:
|
if eina_hash_find(object_mapping, name) != NULL:
|
||||||
raise ValueError("Object type name '%s' already registered." % name)
|
raise ValueError("Object type name '%s' already registered." % name)
|
||||||
|
|
||||||
EINA_LOG_DOM_DBG(PY_EFL_EO_LOG_DOMAIN, "REGISTER: %s => %s", name, <char *>cls.__name__)
|
cdef object cls_name = cls.__name__
|
||||||
|
if isinstance(cls_name, unicode): cls_name = PyUnicode_AsUTF8String(cls_name)
|
||||||
|
|
||||||
|
EINA_LOG_DOM_DBG(PY_EFL_EO_LOG_DOMAIN, "REGISTER: %s => %s", <char *>name, <char *>cls_name)
|
||||||
eina_hash_add(object_mapping, name, <PyObject *>cls)
|
eina_hash_add(object_mapping, name, <PyObject *>cls)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,8 @@ import traceback
|
||||||
import types
|
import types
|
||||||
from functools import update_wrapper
|
from functools import update_wrapper
|
||||||
|
|
||||||
|
from cpython cimport PY_VERSION_HEX, PyUnicode_AsUTF8String
|
||||||
|
|
||||||
from efl.eina cimport EINA_LOG_DOM_WARN
|
from efl.eina cimport EINA_LOG_DOM_WARN
|
||||||
from efl.utils.logger cimport PY_EFL_LOG_DOMAIN
|
from efl.utils.logger cimport PY_EFL_LOG_DOMAIN
|
||||||
|
|
||||||
|
@ -33,7 +35,10 @@ class WRAPPER(object):
|
||||||
self.message = message
|
self.message = message
|
||||||
|
|
||||||
def __get__(self, obj, objtype):
|
def __get__(self, obj, objtype):
|
||||||
return types.MethodType(self, obj, objtype)
|
if PY_VERSION_HEX < 0x03000000:
|
||||||
|
return types.MethodType(self, obj, objtype)
|
||||||
|
else:
|
||||||
|
return types.MethodType(self, obj)
|
||||||
|
|
||||||
def __call__(self, *args, **kwargs):
|
def __call__(self, *args, **kwargs):
|
||||||
cdef:
|
cdef:
|
||||||
|
@ -58,6 +63,9 @@ class WRAPPER(object):
|
||||||
if self.message is not None:
|
if self.message is not None:
|
||||||
msg += " " + self.message
|
msg += " " + self.message
|
||||||
|
|
||||||
EINA_LOG_DOM_WARN(PY_EFL_LOG_DOMAIN, msg, NULL)
|
msg2 = msg
|
||||||
|
if isinstance(msg2, unicode): msg2 = PyUnicode_AsUTF8String(msg2)
|
||||||
|
|
||||||
|
EINA_LOG_DOM_WARN(PY_EFL_LOG_DOMAIN, msg2, NULL)
|
||||||
|
|
||||||
return self.f(*args, **kwargs)
|
return self.f(*args, **kwargs)
|
||||||
|
|
|
@ -18,7 +18,9 @@
|
||||||
from libc.string cimport const_char
|
from libc.string cimport const_char
|
||||||
from efl.eina cimport Eina_Log_Domain, const_Eina_Log_Domain, Eina_Log_Level, \
|
from efl.eina cimport Eina_Log_Domain, const_Eina_Log_Domain, Eina_Log_Level, \
|
||||||
eina_log_print_cb_set, eina_log_domain_register, eina_log_level_set, \
|
eina_log_print_cb_set, eina_log_domain_register, eina_log_level_set, \
|
||||||
eina_log_level_get, eina_log_domain_level_get, eina_log_domain_level_set
|
eina_log_level_get, eina_log_domain_level_get, eina_log_domain_level_set, \
|
||||||
|
eina_log_print
|
||||||
|
from cpython cimport PyUnicode_AsUTF8String
|
||||||
|
|
||||||
cdef extern from "stdarg.h":
|
cdef extern from "stdarg.h":
|
||||||
ctypedef struct va_list:
|
ctypedef struct va_list:
|
||||||
|
@ -42,8 +44,9 @@ cdef void py_eina_log_print_cb(const_Eina_Log_Domain *d,
|
||||||
const_char *file, const_char *fnc, int line,
|
const_char *file, const_char *fnc, int line,
|
||||||
const_char *fmt, void *data, va_list args) with gil:
|
const_char *fmt, void *data, va_list args) with gil:
|
||||||
cdef unicode msg = PyUnicode_FromFormatV(fmt, args)
|
cdef unicode msg = PyUnicode_FromFormatV(fmt, args)
|
||||||
rec = logging.LogRecord(d.name, log_levels[level], file, line, msg, None, None, fnc)
|
cdef unicode name = d.name.decode("utf-8")
|
||||||
logger = loggers.get(d.name, loggers["efl"])
|
rec = logging.LogRecord(name, log_levels[level], file, line, msg, None, None, fnc)
|
||||||
|
logger = loggers.get(name, loggers["efl"])
|
||||||
logger.handle(rec)
|
logger.handle(rec)
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
@ -52,12 +55,16 @@ eina_log_print_cb_set(py_eina_log_print_cb, NULL)
|
||||||
|
|
||||||
class PyEFLLogger(logging.Logger):
|
class PyEFLLogger(logging.Logger):
|
||||||
def __init__(self, name):
|
def __init__(self, name):
|
||||||
self.eina_log_domain = eina_log_domain_register(name, NULL)
|
cname = name
|
||||||
|
if isinstance(cname, unicode): cname = PyUnicode_AsUTF8String(cname)
|
||||||
|
self.eina_log_domain = eina_log_domain_register(cname, NULL)
|
||||||
loggers[name] = self
|
loggers[name] = self
|
||||||
logging.Logger.__init__(self, name)
|
logging.Logger.__init__(self, name)
|
||||||
|
|
||||||
def setLevel(self, lvl):
|
def setLevel(self, lvl):
|
||||||
eina_log_domain_level_set(self.name, log_levels.index(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)
|
logging.Logger.setLevel(self, lvl)
|
||||||
|
|
||||||
logging.setLoggerClass(PyEFLLogger)
|
logging.setLoggerClass(PyEFLLogger)
|
||||||
|
@ -71,7 +78,7 @@ logging.setLoggerClass(logging.Logger)
|
||||||
|
|
||||||
cdef public int PY_EFL_LOG_DOMAIN = rootlog.eina_log_domain
|
cdef public int PY_EFL_LOG_DOMAIN = rootlog.eina_log_domain
|
||||||
|
|
||||||
cdef int add_logger(char *name):
|
cdef int add_logger(object name):
|
||||||
logging.setLoggerClass(PyEFLLogger)
|
logging.setLoggerClass(PyEFLLogger)
|
||||||
|
|
||||||
log = logging.getLogger(name)
|
log = logging.getLogger(name)
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
cdef:
|
cdef:
|
||||||
int add_logger(char *name)
|
int add_logger(object name)
|
||||||
int PY_EFL_LOG_DOMAIN
|
int PY_EFL_LOG_DOMAIN
|
||||||
|
|
Loading…
Reference in New Issue