kopia lustrzana https://github.com/micropython/micropython-lib
logging: Support extra context for LogRecord.
Extra context is usable to enrich log record with concrete context additions. Signed-off-by: Alon Bar-Lev <alon.barlev@gmail.com>pull/1004/head
rodzic
913498ef05
commit
784c55fdfb
|
@ -28,7 +28,7 @@ _default_datefmt = "%Y-%m-%d %H:%M:%S"
|
||||||
|
|
||||||
|
|
||||||
class LogRecord:
|
class LogRecord:
|
||||||
def set(self, name, level, message):
|
def __init__(self, name, level, message, extra=None):
|
||||||
self.name = name
|
self.name = name
|
||||||
self.levelno = level
|
self.levelno = level
|
||||||
self.levelname = _level_dict[level]
|
self.levelname = _level_dict[level]
|
||||||
|
@ -36,6 +36,11 @@ class LogRecord:
|
||||||
self.ct = time.time()
|
self.ct = time.time()
|
||||||
self.msecs = int((self.ct - int(self.ct)) * 1000)
|
self.msecs = int((self.ct - int(self.ct)) * 1000)
|
||||||
self.asctime = None
|
self.asctime = None
|
||||||
|
if extra is not None:
|
||||||
|
for key in extra:
|
||||||
|
if (key in ["message", "asctime"]) or (key in self.__dict__):
|
||||||
|
raise KeyError("Attempt to overwrite %r in LogRecord" % key)
|
||||||
|
setattr(self, key, extra[key])
|
||||||
|
|
||||||
|
|
||||||
class Handler:
|
class Handler:
|
||||||
|
@ -110,7 +115,6 @@ class Logger:
|
||||||
self.name = name
|
self.name = name
|
||||||
self.level = level
|
self.level = level
|
||||||
self.handlers = []
|
self.handlers = []
|
||||||
self.record = LogRecord()
|
|
||||||
|
|
||||||
def setLevel(self, level):
|
def setLevel(self, level):
|
||||||
self.level = level
|
self.level = level
|
||||||
|
@ -121,36 +125,36 @@ class Logger:
|
||||||
def getEffectiveLevel(self):
|
def getEffectiveLevel(self):
|
||||||
return self.level or getLogger().level or _DEFAULT_LEVEL
|
return self.level or getLogger().level or _DEFAULT_LEVEL
|
||||||
|
|
||||||
def log(self, level, msg, *args):
|
def log(self, level, msg, *args, extra=None):
|
||||||
if self.isEnabledFor(level):
|
if self.isEnabledFor(level):
|
||||||
if args:
|
if args:
|
||||||
if isinstance(args[0], dict):
|
if isinstance(args[0], dict):
|
||||||
args = args[0]
|
args = args[0]
|
||||||
msg = msg % args
|
msg = msg % args
|
||||||
self.record.set(self.name, level, msg)
|
record = LogRecord(self.name, level, msg, extra)
|
||||||
handlers = self.handlers
|
handlers = self.handlers
|
||||||
if not handlers:
|
if not handlers:
|
||||||
handlers = getLogger().handlers
|
handlers = getLogger().handlers
|
||||||
for h in handlers:
|
for h in handlers:
|
||||||
h.emit(self.record)
|
h.emit(record)
|
||||||
|
|
||||||
def debug(self, msg, *args):
|
def debug(self, msg, *args, **kwargs):
|
||||||
self.log(DEBUG, msg, *args)
|
self.log(DEBUG, msg, *args, **kwargs)
|
||||||
|
|
||||||
def info(self, msg, *args):
|
def info(self, msg, *args, **kwargs):
|
||||||
self.log(INFO, msg, *args)
|
self.log(INFO, msg, *args, **kwargs)
|
||||||
|
|
||||||
def warning(self, msg, *args):
|
def warning(self, msg, *args, **kwargs):
|
||||||
self.log(WARNING, msg, *args)
|
self.log(WARNING, msg, *args, **kwargs)
|
||||||
|
|
||||||
def error(self, msg, *args):
|
def error(self, msg, *args, **kwargs):
|
||||||
self.log(ERROR, msg, *args)
|
self.log(ERROR, msg, *args, **kwargs)
|
||||||
|
|
||||||
def critical(self, msg, *args):
|
def critical(self, msg, *args, **kwargs):
|
||||||
self.log(CRITICAL, msg, *args)
|
self.log(CRITICAL, msg, *args, **kwargs)
|
||||||
|
|
||||||
def exception(self, msg, *args, exc_info=True):
|
def exception(self, msg, *args, exc_info=True, **kwargs):
|
||||||
self.log(ERROR, msg, *args)
|
self.log(ERROR, msg, *args, **kwargs)
|
||||||
tb = None
|
tb = None
|
||||||
if isinstance(exc_info, BaseException):
|
if isinstance(exc_info, BaseException):
|
||||||
tb = exc_info
|
tb = exc_info
|
||||||
|
@ -178,32 +182,32 @@ def getLogger(name=None):
|
||||||
return _loggers[name]
|
return _loggers[name]
|
||||||
|
|
||||||
|
|
||||||
def log(level, msg, *args):
|
def log(level, msg, *args, **kwargs):
|
||||||
getLogger().log(level, msg, *args)
|
getLogger().log(level, msg, *args, **kwarg)
|
||||||
|
|
||||||
|
|
||||||
def debug(msg, *args):
|
def debug(msg, *args, **kwargs):
|
||||||
getLogger().debug(msg, *args)
|
getLogger().debug(msg, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
def info(msg, *args):
|
def info(msg, *args, **kwargs):
|
||||||
getLogger().info(msg, *args)
|
getLogger().info(msg, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
def warning(msg, *args):
|
def warning(msg, *args, **kwargs):
|
||||||
getLogger().warning(msg, *args)
|
getLogger().warning(msg, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
def error(msg, *args):
|
def error(msg, *args, **kwargs):
|
||||||
getLogger().error(msg, *args)
|
getLogger().error(msg, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
def critical(msg, *args):
|
def critical(msg, *args, **kwargs):
|
||||||
getLogger().critical(msg, *args)
|
getLogger().critical(msg, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
def exception(msg, *args, exc_info=True):
|
def exception(msg, *args, exc_info=True, **kwargs):
|
||||||
getLogger().exception(msg, *args, exc_info=exc_info)
|
getLogger().exception(msg, *args, exc_info=exc_info, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
def shutdown():
|
def shutdown():
|
||||||
|
|
Ładowanie…
Reference in New Issue