| 123456789101112131415161718192021222324252627282930313233343536373839 |
- '''
- @author: devone, 02-2020
- '''
- import logging.config
- import sys
- import traceback
- import yaml
- from path import Path
- HERE = Path(__file__).parent
- LOGDIR = HERE
- LOGCONF = HERE / 'logging.yml'
- SYS_EXCEPT_HOOK = sys.excepthook
- def start(name="main", level=0, filename="", replace=False):
- # charge la configuration du logging depuis le fichier 'logging.yaml'
- with open(LOGCONF, 'rt') as f:
- conf = yaml.load(f, Loader=yaml.FullLoader)
- if level:
- conf["loggers"][name]["level"] = level
- if not filename:
- filename = LOGDIR / r'{}.log'.format(name)
- if replace:
- filename.remove_p()
- conf["handlers"]["file"]["filename"] = filename
- logging.config.dictConfig(conf)
- logger = logging.getLogger(name)
- def _excepthook(typ, value, trace):
- """ Remplace la gestion d'erreur standard, pour logger aussi les erreurs non gérées """
- logger.error("{}\n{}\n{}".format(typ.__name__, value, ''.join(traceback.format_tb(trace))))
- SYS_EXCEPT_HOOK(typ, value, trace)
- sys.excepthook = _excepthook
|