Opened 18 years ago
Closed 17 years ago
#5151 closed defect (fixed)
Browser requests w/ non-ASCII path trigger an error in the Python logger
Reported by: | Emmanuel Blot | Owned by: | Emmanuel Blot |
---|---|---|---|
Priority: | low | Milestone: | 0.11 |
Component: | general | Version: | devel |
Severity: | minor | Keywords: | logger |
Cc: | Branch: | ||
Release Notes: | |||
API Changes: | |||
Internal Changes: |
Description
When a request to browse a directory that contains non-ASCII characters, the Python logger triggers an un-noticed error:
192.168.25.1 - - [15/Apr/2007 01:37:06] "GET /project1/browser/branches/teste%CC%81 HTTP/1.1" 200 - Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/logging/__init__.py", line 731, in emit msg = self.format(record) File "/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/logging/__init__.py", line 617, in format return fmt.format(record) File "/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/logging/__init__.py", line 408, in format s = self._fmt % record.__dict__ UnicodeEncodeError: 'ascii' codec can't encode characters in position 43-44: ordinal not in range(128)
The error can probably be triggered with any requests that contains non-ASCII characters in the path part of the URL.
- A possible workaround is to convert the URL path string to UTF-8:
-
trunk/trac/web/api.py
169 169 170 170 def __repr__(self): 171 171 return '<%s "%s %s">' % (self.__class__.__name__, self.method, 172 self.path_info )172 self.path_info.encode('utf-8')) 173 173 174 174 # Public API
-
This error occurs when logger output is stderr
(the terminal being configured to handle UTF-8). I'm not sure about how it behaves with other output stream such as syslog or a file.
Attachments (0)
Change History (4)
comment:1 by , 18 years ago
Milestone: | → 0.11 |
---|
comment:2 by , 18 years ago
Milestone: | 0.11.1 → 0.11 |
---|---|
Owner: | changed from | to
comment:3 by , 18 years ago
Status: | new → assigned |
---|
I can't reproduce it anymore - weird.
I'm using the following setup:
Trac | 0.11dev-r5785 |
Python | 2.5 [GCC 4.0.1 (Apple Computer, Inc. build 5341)] |
setuptools | 0.6c5 |
SQLite | 3.3.5 |
pysqlite | 2.3.2 |
Genshi | 0.5dev-r657 |
Pygments | 0.7.1 |
Subversion | 1.4.3 (r23084) |
jQuery | 1.1.2 |
Can you double check? I don't mind committing the fix, but it seems that the log output is ok w/o it, such as in:
01:29:06 Trac[main] DEBUG: Dispatching <Request "GET u'/browser/TV.com/test/Re\u0301pertoire a\u0300 proble\u0300mes'">
comment:4 by , 17 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Well, it seems r5646 did the trick.
I'm pretty sure I've seen the error in one circumstance in a later version, but I can't remember the config I used and steps to reproduce, so I'm closing it for now.
Yeah, I'm still seeing this. Please commit your suggested fix.