Evolution #6256
grep fait planter manage_schedule
Statut:
Fermé
Priorité:
Normal
Assigné à:
Gwenael Remond
Catégorie:
-
Version cible:
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
encoding utf-8 obligatoire pour tous les programmes python, fixes #6256
Historique
#1 Mis à jour par Daniel Dehennin il y a plus de 12 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 12 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 12 ans
commençons par ajouter la variable d'environnement ...
#4 Mis à jour par Daniel Dehennin il y a plus de 12 ans
- Version cible changé de Eole 2.4-beta1 à Eole 2.4-beta2
#5 Mis à jour par Gwenael Remond il y a plus de 12 ans
- Statut changé de Nouveau à Résolu
- % réalisé changé de 0 à 100
Appliqué par commit 737ea1d711addb9f83ebc4a68fb2986ccf5264cd.
#6 Mis à jour par Gwenael Remond il y a plus de 12 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 12 ans
- Statut changé de En attente d'informations à Résolu
#8 Mis à jour par Gwenael Remond il y a plus de 12 ans
- % réalisé changé de 0 à 100
#9 Mis à jour par Joël Cuissinat il y a plus de 12 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)