Projet

Général

Profil

Evolution #6256

grep fait planter manage_schedule

Ajouté par Joël Cuissinat il y a plus de 10 ans. Mis à jour il y a plus de 10 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Gwenael Remond
Catégorie:
-
Début:
04/11/2013
Echéance:
08/11/2013
% réalisé:

100%

Temps estimé:
1.00 h
Temps passé:
Distribution:
EOLE 2.4

Description

Et ce n'est sûrement pas le seul script qui pose problème :o

root@sphynx:~# /usr/share/eole/sbin/manage_schedule -l 
Tâches planifiées EOLE :
 * les tâches hebdomadaires se feront le vendredi à 05:33 (hors sauvegarde)
  - avant sauvegarde
   + Mise à jour du serveur (majauto)

root@sphynx:~# /usr/share/eole/sbin/manage_schedule -l | grep maj
Traceback (most recent call last):
  File "/usr/share/eole/sbin/manage_schedule", line 81, in <module>
    main()
  File "/usr/share/eole/sbin/manage_schedule", line 59, in main
    display_schedules()
  File "/usr/lib/python2.7/dist-packages/pyeole/schedule.py", line 112, in display_schedules
    print "   +", schedules['{0}.description'.format(sched)], \
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe0' in position 5: ordinal not in range(128)

Révisions associées

Révision 737ea1d7 (diff)
Ajouté par Gwenael Remond il y a plus de 10 ans

encoding utf-8 obligatoire pour tous les programmes python, fixes #6256

Historique

#1 Mis à jour par Daniel Dehennin il y a plus de 10 ans

Le problème vient du pipe qui fait que la sortie standard du script python n’est plus un tty.

Python ne peut donc pas découvrir que la sortie est en UTF-8.

Il faut remplacer les print par des log..

Les bibliothèques doivent utiliser le code suivant :

from logging import getLogger
log = getLogger(__name__)

log.critical(u"This is a “critical” message.")
log.error(u"This is an “error” message.")
log.warn(u"This is a “warning” message.")
log.info(u"This is an “informational” message.")
log.debug(u"This is a “debuging” message.")

Les programmes devant gérer la sortie vers les utilisateurs doivent utiliser le code suivant :

from pyeole.log import init_logging, set_formatter

# Logger for the application, use level=u'info' to display normal informational message
log = init_logging(name=u'myapp', level='uinfo')

# Do not prefix warning, error and critical log of the current program with “myapp - ”
set_formatter(log, u'stderr', u'brief')

# Logger for a sub-library, we only want warnings
# This logger is never used by ourself.
sublib = init_logging(name=u'pyeole.sublib', level=u'warning')

# Root logger for any other logger, display only errors
# This logger must be defined last since non-root logger reset the root logger
# This logger is never used by ourself.
root_log = init_logging(name=u'root', level=u'error')

### Main code of the application

log.critical(u"This is a “critical” message.")
log.error(u"This is an “error” message.")
log.warn(u"This is a “warning” message.")
log.info(u"This is an “informational” message.")
log.debug(u"This is a “debuging” message.")

#2 Mis à jour par Gwenael Remond il y a plus de 10 ans

il faudrait que globalement l'ioencoding PYTHONIOENCODING soit prérèglé.

root@eolebase:~# /usr/share/eole/sbin/manage_schedule -l|grep pouet
Traceback (most recent call last):
  File "/usr/share/eole/sbin/manage_schedule", line 81, in <module>
    main()
  File "/usr/share/eole/sbin/manage_schedule", line 59, in main
    display_schedules()
  File "/usr/lib/python2.7/dist-packages/pyeole/schedule.py", line 112, in display_schedules
    print "   +", schedules['{0}.description'.format(sched)], \
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 29: ordinal not in range(128)
root@eolebase:~# export PYTHONIOENCODING='UTF8'
root@eolebase:~# /usr/share/eole/sbin/manage_schedule -l|grep pouet
root@eolebase:~# 

#3 Mis à jour par Joël Cuissinat il y a plus de 10 ans

commençons par ajouter la variable d'environnement ...

#4 Mis à jour par Daniel Dehennin il y a plus de 10 ans

  • Version cible changé de Eole 2.4-beta1 à Eole 2.4-beta2

#5 Mis à jour par Gwenael Remond il y a plus de 10 ans

  • Statut changé de Nouveau à Résolu
  • % réalisé changé de 0 à 100

#6 Mis à jour par Gwenael Remond il y a plus de 10 ans

  • Statut changé de Résolu à En attente d'informations
  • Assigné à mis à Gwenael Remond
  • % réalisé changé de 100 à 0

#7 Mis à jour par Gwenael Remond il y a plus de 10 ans

  • Statut changé de En attente d'informations à Résolu

#8 Mis à jour par Gwenael Remond il y a plus de 10 ans

  • % réalisé changé de 0 à 100

#9 Mis à jour par Joël Cuissinat il y a plus de 10 ans

  • Echéance mis à 08/11/2013
  • Statut changé de Résolu à Fermé
  • Début mis à 04/11/2013
root@amon:~# /usr/share/eole/sbin/manage_schedule -l | grep maj
   + Mise à jour blacklist du serveur (majblacklist)
   + Mise à jour du serveur (majauto)

Formats disponibles : Atom PDF