more robust loggin of unicode messages
authorKonstantin Stepanov <kstep@p-nut.info>
Wed, 15 Dec 2010 05:40:12 +0000 (07:40 +0200)
committerKonstantin Stepanov <kstep@p-nut.info>
Wed, 15 Dec 2010 05:40:12 +0000 (07:40 +0200)
dbuscron/logger.py

index cc96cc1..59ddf59 100644 (file)
@@ -32,10 +32,18 @@ class Logger(object):
     level = property(_get_level, _set_level)
 
     def log(self, level, *message):
-        if level <= self.__level:
-            msg = ' '.join(str(m) for m in message)
-            ts = datetime.now().strftime('%Y-%m-%d %H:%M')
-            self.__out.write('[%s] %s\n' % (ts, msg))
+        if level > self.__level:
+            return
+
+        def ucode(m):
+            try:
+                return str(m)
+            except UnicodeEncodeError:
+                return unicode(m).encode('utf-8')
+
+        msg = ' '.join(map(ucode, message))
+        ts = datetime.now().strftime('%Y-%m-%d %H:%M')
+        self.__out.write('[%s] %s\n' % (ts, msg))
 
     def debug(self, *message):
         self.log(self.DEBUG, *message)