core (log): log.exception is now usable

This commit is contained in:
Goffi 2022-11-24 10:08:47 +01:00
commit c5d0966e34
2 changed files with 27 additions and 17 deletions

View file

@ -22,7 +22,6 @@
# TODO: change formatting from "%s" style to "{}" when moved to Python 3
from typing import TYPE_CHECKING, Any, Optional
from typing_extensions import TypedDict
if TYPE_CHECKING:
from logging import _ExcInfoType
@ -45,10 +44,6 @@ class Filtered(Exception):
pass
class KWArgs(TypedDict):
exc_info: _ExcInfoType
class Logger:
"""High level logging class"""
fmt = None # format option as given by user (e.g. SAT_LOG_LOGGER)
@ -68,25 +63,39 @@ class Logger:
self.post_treat = other.post_treat
self._name = other._name
def addTraceback(self, message):
def add_traceback(self, message):
tb = traceback.format_exc()
return message + "\n==== traceback ====\n" + tb
def out(self, message: object, level: Optional[str] = None, **kwargs: KWArgs) -> None:
def out(
self,
message: object,
level: Optional[str] = None,
exc_info: _ExcInfoType = False,
**kwargs
) -> None:
"""Actually log the message
@param message: formatted message
"""
if kwargs.get('exc_info', False):
message = self.addTraceback(message)
if exc_info:
message = self.add_traceback(message)
print(message)
def log(self, level: str, message: object, **kwargs: KWArgs) -> None:
def log(
self,
level: str,
message: object,
exc_info: _ExcInfoType = False,
**kwargs
) -> None:
"""Print message
@param level: one of C.LOG_LEVELS
@param message: message to format and print
"""
if exc_info:
message = self.add_traceback(message)
try:
formatted = self.format(level, message)
if self.post_treat is None:
@ -129,21 +138,24 @@ class Logger:
else:
raise e
def debug(self, msg: object, **kwargs: KWArgs) -> None:
def debug(self, msg: object, **kwargs) -> None:
self.log(C.LOG_LVL_DEBUG, msg, **kwargs)
def info(self, msg: object, **kwargs: KWArgs) -> None:
def info(self, msg: object, **kwargs) -> None:
self.log(C.LOG_LVL_INFO, msg, **kwargs)
def warning(self, msg: object, **kwargs: KWArgs) -> None:
def warning(self, msg: object, **kwargs) -> None:
self.log(C.LOG_LVL_WARNING, msg, **kwargs)
def error(self, msg: object, **kwargs: KWArgs) -> None:
def error(self, msg: object, **kwargs) -> None:
self.log(C.LOG_LVL_ERROR, msg, **kwargs)
def critical(self, msg: object, **kwargs: KWArgs) -> None:
def critical(self, msg: object, **kwargs) -> None:
self.log(C.LOG_LVL_CRITICAL, msg, **kwargs)
def exception(self, msg: object, exc_info=True, **kwargs) -> None:
self.log(C.LOG_LVL_ERROR, msg, exc_info=exc_info, **kwargs)
class FilterName(object):
"""Filter on logger name according to a regex"""

View file

@ -38,8 +38,6 @@ class TwistedLogger(log.Logger):
@param message: formatted message
"""
if kwargs.pop('exc_info', False):
message = self.addTraceback(message)
self.twisted_log.emit(
level=self.level_map[level],
format=message,