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 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
Appliqué par commit 737ea1d711addb9f83ebc4a68fb2986ccf5264cd.
#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)