Author: phd
Date: 2009-09-25 08:37:54 -0600 (Fri, 25 Sep 2009)
New Revision: 3992
Modified:
SQLObject/branches/0.10/docs/News.txt
SQLObject/branches/0.10/sqlobject/dbconnection.py
Log:
Fixed a bug in logging to console - convert unicode to str (bug 2865410).
Modified: SQLObject/branches/0.10/docs/News.txt
===================================================================
--- SQLObject/branches/0.10/docs/News.txt 2009-09-20 19:17:26 UTC (rev 3991)
+++ SQLObject/branches/0.10/docs/News.txt 2009-09-25 14:37:54 UTC (rev 3992)
@@ -7,6 +7,11 @@
.. _start:
+SQLObject 0.10.8
+================
+
+* Fixed a bug in logging to console - convert unicode to str.
+
SQLObject 0.10.7
================
Modified: SQLObject/branches/0.10/sqlobject/dbconnection.py
===================================================================
--- SQLObject/branches/0.10/sqlobject/dbconnection.py 2009-09-20 19:17:26 UTC (rev 3991)
+++ SQLObject/branches/0.10/sqlobject/dbconnection.py 2009-09-25 14:37:54 UTC (rev 3992)
@@ -28,26 +28,32 @@
conn.close()
class ConsoleWriter:
- def __init__(self, loglevel):
+ def __init__(self, connection, loglevel):
self.loglevel = loglevel
self.logfile = getattr(sys, loglevel or "stdout")
+ self.dbEncoding = getattr(connection, "dbEncoding", "ascii")
def write(self, text):
+ if isinstance(text, unicode):
+ try:
+ text = text.encode(self.dbEncoding)
+ except UnicodeEncodeError:
+ text = repr(text)[2:-1]
self.logfile.write(text + '\n')
class LogWriter:
- def __init__(self, logger, loglevel):
+ def __init__(self, connection, logger, loglevel):
self.logger = logger
self.loglevel = loglevel
self.logmethod = getattr(logger, loglevel)
def write(self, text):
self.logmethod(text)
-def makeDebugWriter(loggerName, loglevel):
+def makeDebugWriter(connection, loggerName, loglevel):
if not loggerName:
- return ConsoleWriter(loglevel)
+ return ConsoleWriter(connection, loglevel)
import logging
logger = logging.getLogger(loggerName)
- return LogWriter(logger, loglevel)
+ return LogWriter(connection, logger, loglevel)
class Boolean(object):
"""A bool class that also understands some special string keywords (yes/no, true/false, on/off, 1/0)"""
@@ -69,7 +75,7 @@
self.debug = Boolean(debug)
self.debugOutput = Boolean(debugOutput)
self.debugThreading = Boolean(debugThreading)
- self.debugWriter = makeDebugWriter(logger, loglevel)
+ self.debugWriter = makeDebugWriter(self, logger, loglevel)
self.doCache = Boolean(cache)
self.cache = CacheSet(cache=self.doCache)
self.style = style
|