logconf.py 995 B

123456789101112131415161718192021222324252627282930313233343536
  1. '''
  2. Created on 6 juil. 2017
  3. @author: olivier.massot
  4. '''
  5. import logging.config
  6. import sys
  7. import traceback
  8. import yaml
  9. from core.constants import LOGDIR, LOGCONF
  10. SYS_EXCEPT_HOOK = sys.excepthook
  11. def start(name="main", level=0, filename=""):
  12. # charge la configuration du logging depuis le fichier 'logging.yaml'
  13. with open(LOGCONF, 'rt') as f:
  14. conf = yaml.load(f)
  15. if level:
  16. conf["loggers"][name]["level"] = level
  17. if not filename:
  18. filename = LOGDIR / r'{}.log'.format(name)
  19. conf["handlers"]["file"]["filename"] = filename
  20. logging.config.dictConfig(conf)
  21. logger = logging.getLogger(name)
  22. def _excepthook(typ, value, trace):
  23. """ Remplace la gestion d'erreur standard, pour logger aussi les erreurs non gérées """
  24. logger.error("{}\n{}\n{}".format(typ.__name__, value, ''.join(traceback.format_tb(trace))))
  25. SYS_EXCEPT_HOOK(typ, value, trace)
  26. sys.excepthook = _excepthook