[infrae.wsgi][Sylvain Viollon] Support rogue unicode in error me...
[email protected] Wed, 11 Sep 2013 16:59:45 +0200
| Newsgroups | gmane.comp.web.zope.silva.cvs |
|---|---|
| Message-ID | <[email protected]> |
author: Sylvain Viollon
date: Wed Sep 11 16:59:41 2013 +0200
revision: 159:fd4bff1172fb in infrae.wsgi
branch: 2.0
details: https://hg.infrae.com/infrae.wsgi?cmd=changeset;node=fd4bff1172fb
modified: src/infrae/wsgi/log.py
added:
removed:
log: Support rogue unicode in error messages.
diffstat:
src/infrae/wsgi/log.py | 11 ++++++++++-
1 files changed, 10 insertions(+), 1 deletions(-)
diffs (28 lines):
diff -r fd2bf802bac1 -r fd4bff1172fb src/infrae/wsgi/log.py
--- a/src/infrae/wsgi/log.py Wed May 22 15:07:37 2013 +0200
+++ b/src/infrae/wsgi/log.py Wed Sep 11 16:59:41 2013 +0200
@@ -35,6 +35,15 @@
return 'n/a'
+def make_unicode(text):
+ """Ensure the given text is in unicode.
+ """
+ if not isinstance(text, unicode):
+ if isinstance(text, str):
+ return text.decode('utf-8', 'replace')
+ return unicode(text)
+ return text
+
def log_invalid_response_data(data, environ):
"""Log an invalid response type from application. Data sent must
always be a string (unicode strings are accepted), if it is not an
@@ -123,7 +132,7 @@
log_entry.extend(full_traceback)
# Save error.
- report = ''.join(log_entry)
+ report = u''.join(map(make_unicode, log_entry))
logger.error(report)
self.__last_errors.append(
{'url': request['URL'], 'report': report, 'time': datetime.now()})