Project

General

Profile

Evolution #4253

Revoir la bibliothèque d’aide au système de logging

Added by Daniel Dehennin over 7 years ago. Updated about 7 years ago.

Status:
Fermé
Priority:
Normal
Assigned To:
developpeurs_eole
Category:
-
Start date:
10/10/2012
Due date:
% Done:

100%

Spent time:
Distribution:
EOLE 2.4

Description

Les scripts python de creole sur lequels je travaille utilise le morceau de code suivant :

option = parse_cmdline()
log = creole.log.init_creole_log(level=getattr(logging, option.log_level.upper()))

# Add console output
log.addHandler(logging.StreamHandler(sys.stdout))

if option.debug:
    # debug override default logging option
    log.setLevel(level=logging.DEBUG)
elif option.verbose:
    log.setLevel(level=logging.INFO)

Il faudrait fournir une méthode simple et utilisable pour créer un logger avec différentes sorties et différents niveaux de capture.

Un script aurait besoin :
  • de créer un logger à la racine (logging.getLogger() sans argument)
  • de définir le niveau de capture général en fonction d’une options de la ligne de commande (-v log.info, -d log.debug)
  • de définir des sorties
  • de restreindre le niveau de log sur une sortie

On peut aussi logger beaucoup d’infos dans des fichiers/syslog (logging.INFO ou logging.DEBUG) et n’afficher sur la sortie d’erreur/standard que ce qui est demandé par l’utilisateur.


Related issues

Related to creole - Anomalie #4347: Ne pas logger lorsque l’on propage une exception Fermé 10/26/2012 05/31/2013
Related to creole - Anomalie #4349: creoled ne peut pas démarrer sans rsyslog Fermé 10/26/2012

Associated revisions

Revision 7ba618ec (diff)
Added by Daniel Dehennin over 7 years ago

Ajout d’une bibliothèque de colorisation des stream de log

Cette bibliothèque gère si le stream est un tty afin de ne pas afficher
d’échappement en cas de redirection.

Code sous BSD disponible à l’adresse : https://code.google.com/p/logutils/

  • pyeole/loghandlers.py: Défini la classe ColorizingStreamHandler().

Ref: #4253 @10m

Revision f2984627 (diff)
Added by Daniel Dehennin over 7 years ago

Ajout d’une fonction d’initialisation de logger

Cette fonction permet de configurer facilement un logger pour la console,
syslog et dans un fichier.

Le logger de console utilise par défaut les couleurs suivantes si les
sorties standard et d’erreur sont des tty :

- DEBUG: bleu sur sortie d’erreur
- INFO: pas de couleur sur sortie standard
- WARNING: jaune sur sortie d’erreur
- ERROR: rouge sur sortie d’erreur
- CRITICAL: blanc sur fond rouge sur sortie d’erreur

L’ancienne API est marquée comme deprecated.

  • pyeole/log.py (LevelRangeFilter): N’accepte que les messages dont la
    sévérité est comprise dans un intervale.
    (LevelFilter): N’accepte que les messages d’une sévérité
    donnée.
    (init_logging): Initie un logger, seul un logger sur
    console est activé par défaut.

Fixes: #4253 @3h

Revision 023a3056 (diff)
Added by Daniel Dehennin over 7 years ago

Ajout de la notice de copyright pour pyeole.loghandlers.py

  • debian/copyright: pyeole.loghandlers.py est sous BSD 3 clauses.

Ref: #4253 @2m

Revision d5699597 (diff)
Added by Daniel Dehennin over 7 years ago

L’initialisation d’un logger ne doit pas désactiver ceux des bibliothèques

  • pyeole/log.py (init_logging): Ne pas désactiver les loggers existants.

Ref: #4253 @5m

Revision cd27c0c3 (diff)
Added by Daniel Dehennin over 7 years ago

Utilisation de pyeole.log.init_logging()

Suppression de la bibliothèque creole.log et des tests associés.

  • bin/CreoleCat: Utilisation de l’API pyeole pour initialiser un logger
    racine.
  • bin/CreoleService: Idem
  • bin/CreoleGet: Idem. Le mode verbeux active les « warnings » sur la
    sortie d’erreur car les log « info » sortent sur la sortie standard.

Ref: #4253 @5m

Revision ba7a563a (diff)
Added by Daniel Dehennin over 7 years ago

Amélioration de la gestion des logs sur la sortie d’erreur

  • pyeole/log.py (LevelsFilter): Nouvelle class utilisant une liste de
    niveau de log à accepter.
    (LevelRangeFilter): Hérite de LevelsFilter.
    (init_logging): Ajout du paramètre « as_root » pour définir un logger
    racine même lorsque le paramètre « name » est spécifié.
    Utilisation de « LevelsFilter » comme classe de filtre.
    Définition d’un filtre spécifique pour gérer le cas de la sortie standard.
    Ajout du nom de l’appelant dans le format de message.
    Suppression du handler « stddebug » maintenant que le handler
    « stderr » intègre le niveau « DEBUG ».

Ref: #4253 @30m

History

#1 Updated by Daniel Dehennin over 7 years ago

  • Assigned To set to developpeurs_eole

#2 Updated by Daniel Dehennin over 7 years ago

Quelques liens pour utiliser le système de log à la place des print_<color> définis dans source:pyeole/ansiprint.py?rev=ac4e5fc.

#3 Updated by Daniel Dehennin over 7 years ago

  • Status changed from Nouveau to Résolu
  • % Done changed from 0 to 100

#4 Updated by Joël Cuissinat about 7 years ago

  • Status changed from Résolu to Fermé

On estime que c'est bon :)

Also available in: Atom PDF