Bug #20498
crash au log d'une erreur contenant du non-ascii
0%
Description
File "/usr/lib/python2.7/dist-packages/django/utils/log.py" in emit 126. message = "%s\n\nRequest repr(): %s" % (self.format(record), request_repr) Exception Type: UnicodeDecodeError at /unistra/unistra/link Exception Value: 'ascii' codec can't decode byte 0xc2 in position 2129: ordinal not in range(128)
À remonter la trace, passerelle/utils/jsonresponse.py :
except Exception as e: [...] if (not isinstance(e, (Http404, PermissionDenied, ObjectDoesNotExist)) and getattr(e, 'log_error', True)): logger.exception("Error occurred while processing request", extra=extras)
et la valeur de "e" : ProgrammingError('ERREUR: la relation \xc2\xab unistra_link \xc2\xbb n\'existe pas\nLINE 1: INSERT INTO "unistra_link" ("username", "code", "name_id") V...\n ^\n',).
Fichiers
Historique
Mis à jour par Benjamin Dauvergne il y a plus de 6 ans
- Statut changé de Nouveau à En cours
- Assigné à mis à Benjamin Dauvergne
"%s\n\nRequest repr(): %s" % (self.format(record), request_repr)
Ici la chaîne de gauche est un str
, format()
retourne un str
contenant de l'UTF-8 et request_repr
est une unicode
ne contenant que de l'ASCII, l'interpolation force l'upgrade de la chaîne template en unicode seulement la première chaîne interpolée n'étant pas convertible en ASCII ça plante.
C'est pour cela que je conseille de toujours mettre les messages de log en unicode, parce que ça force self.format(record)
à retourner de l'unicode.
Donc ici ce changement suffirait,
- logger.exception("Error occurred while processing request", extra=extras) + logger.exception(u"Error occurred while processing request", extra=extras)
J'ai pondu du code de test pour s'assurer que cela fonctionne, je vais poser ça.
Mis à jour par Benjamin Dauvergne il y a plus de 6 ans
- Fichier 0001-tests-add-dummy-connector-to-test-failure-behaviours.patch 0001-tests-add-dummy-connector-to-test-failure-behaviours.patch ajouté
- Fichier 0002-jsonresponse-fix-exception-logging-for-exception-con.patch 0002-jsonresponse-fix-exception-logging-for-exception-con.patch ajouté
- Patch proposed changé de Non à Oui
Mis à jour par Benjamin Dauvergne il y a plus de 6 ans
- Fichier 0001-tests-add-dummy-connector-to-test-failure-behaviours.patch 0001-tests-add-dummy-connector-to-test-failure-behaviours.patch ajouté
Application dummy oubliée dans le premier patch.
Mis à jour par Thomas Noël il y a environ 6 ans
(Je pense que ce pépin est toujours d'actualité ?)
J'aime assez l'idée du connecteur "dummy" (aussi pour des tests futurs), mais peut-être le renommer plus explicitement "test", ou "demo" ?
Mis à jour par Benjamin Dauvergne il y a environ 5 ans
- Statut changé de En cours à Solution proposée
Mis à jour par Benjamin Dauvergne il y a environ 5 ans
- Statut changé de Solution proposée à Rejeté