pyeole.log – La gestion des logs

Description

Librairie commune de gestion des logs utilisant le module logging de la lib standard python.

Le module de gestion de log a pour objectif:

  • d’uniformiser le format des logs
  • de centraliser les appels aux fonctions de logs (possibilité de les traiter)
  • de structurer les répertoires de logs

Spécifications

0 NOTSET
10 DEBUG
20 INFO
30 WARNING
40 ERROR
50 CRITICAL/FATAL

Type de contenu

Type 1

Concaténation des messages de niveau égal et supérieur

fichier-debug.log = DEBUG, INFO, WARNING, ERROR, CRITICAL
fichier-info.log = INFO, WARNING, ERROR, CRITICAL
fichier-error.log = WARNING, ERROR, CRITICAL

Type 2

Séparation des niveaux par fichier (param “splitlog”)

fichier-debug.log = DEBUG
fichier-info.log = INFO
fichier-error.log = WARNING, ERROR, CRITICAL

ou

fichier-info.log = DEBUG, INFO
fichier-error.log = WARNING, ERROR, CRITICAL

Sorties

  • console
  • fichier
  • syslog

Cela permet d’avoir une meilleure lisibilité sur les logs d’un module eole.

API/Exemples

EOLE_FORMAT = "%(asctime)s - %(name)s - %(levelname)s - '%(funcName)s' %(message)s"
DEFAULT_LOG_FILE = "/var/log/eole/default.log"
DEFAULT_LOG_LEVEL = 'ERROR'
pyeole.log.make_logger_console()
bla
pyeole.log.make_logger_syslog()
bla
pyeole.log.make_logger(packagename, logfile=DEFAULT_LOG_FILE[, errfile=None, debugfile=None, loglevel=DEFAULT_LOG_LEVEL, logfmt=EOLE_FORMAT])

Initialise un logger pour le package packagename ou renvoie le logger s’il existe déjà

Paramètres:
  • packagename – (string) nom du package appelant ex: creole.eosfunc
  • logfile – (string) fichier de log du package
  • err_file – (string) optionnel, fichier de log des erreurs (facultatif, fichier ‘logfile’ utilisé sinon)
  • debug_file – (string) optionnel, fichier de log du debug (facultatif, fichier ‘logfile’ utilisé sinon) :param log_level: (string) optionnel, NOTSET/DEBUG/INFO/WARNING/ERROR/CRITICAL :param split_log: (boolean) optionnel, séparer les niveau de log suivant les fichiers ou concaténer les niveaux inférieurs :param logfmt: (string) optionnel, format du log (http://docs.python.org/library/logging.html#formatter-objects)
Return:

logger

from pyeole.log import make_logger
log = make_logger(packagename, logfile)

Ensuite, il suffit d’appeler les méthodes suivantes :

log.info("test message")
log.debug("test message")
log.critical("test message")

Il est aussi possible de renvoyer la pile d’appel au moment de la levée d’une exception:

log.exception("test message")