parent
47be89c8ea
commit
19e7d11f61
|
@ -34,7 +34,7 @@ cdef int PY_EFL_EO_LOG_DOMAIN = add_logger(__name__)
|
|||
|
||||
|
||||
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()
|
||||
|
||||
def shutdown():
|
||||
|
@ -65,7 +65,10 @@ cdef void _object_mapping_register(char *name, object cls) except *:
|
|||
if eina_hash_find(object_mapping, name) != NULL:
|
||||
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)
|
||||
|
||||
|
||||
|
|
|
@ -2,6 +2,8 @@ import traceback
|
|||
import types
|
||||
from functools import update_wrapper
|
||||
|
||||
from cpython cimport PY_VERSION_HEX, PyUnicode_AsUTF8String
|
||||
|
||||
from efl.eina cimport EINA_LOG_DOM_WARN
|
||||
from efl.utils.logger cimport PY_EFL_LOG_DOMAIN
|
||||
|
||||
|
@ -33,7 +35,10 @@ class WRAPPER(object):
|
|||
self.message = message
|
||||
|
||||
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):
|
||||
cdef:
|
||||
|
@ -58,6 +63,9 @@ class WRAPPER(object):
|
|||
if self.message is not None:
|
||||
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)
|
||||
|
|
|
@ -18,7 +18,9 @@
|
|||
from libc.string cimport const_char
|
||||
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_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":
|
||||
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 *fmt, void *data, va_list args) with gil:
|
||||
cdef unicode msg = PyUnicode_FromFormatV(fmt, args)
|
||||
rec = logging.LogRecord(d.name, log_levels[level], file, line, msg, None, None, fnc)
|
||||
logger = loggers.get(d.name, loggers["efl"])
|
||||
cdef unicode name = d.name.decode("utf-8")
|
||||
rec = logging.LogRecord(name, log_levels[level], file, line, msg, None, None, fnc)
|
||||
logger = loggers.get(name, loggers["efl"])
|
||||
logger.handle(rec)
|
||||
|
||||
import logging
|
||||
|
@ -52,12 +55,16 @@ eina_log_print_cb_set(py_eina_log_print_cb, NULL)
|
|||
|
||||
class PyEFLLogger(logging.Logger):
|
||||
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
|
||||
logging.Logger.__init__(self, name)
|
||||
|
||||
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.setLoggerClass(PyEFLLogger)
|
||||
|
@ -71,7 +78,7 @@ logging.setLoggerClass(logging.Logger)
|
|||
|
||||
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)
|
||||
|
||||
log = logging.getLogger(name)
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
cdef:
|
||||
int add_logger(char *name)
|
||||
int add_logger(object name)
|
||||
int PY_EFL_LOG_DOMAIN
|
||||
|
|
Loading…
Reference in New Issue