From 467d12fcb2987d6530e683709978d6aadd7ceb05 Mon Sep 17 00:00:00 2001 From: Vinay Sajip Date: Thu, 19 Aug 2010 22:20:22 +0000 Subject: [PATCH] Issue #7077: Fixed SysLogHandler implementation of Unicode handling. --- Lib/logging/handlers.py | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/Lib/logging/handlers.py b/Lib/logging/handlers.py index 61dbf3152d9..dc2d973a640 100644 --- a/Lib/logging/handlers.py +++ b/Lib/logging/handlers.py @@ -732,12 +732,6 @@ class SysLogHandler(logging.Handler): self.socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) self.socket.connect(address) - # curious: when talking to the unix-domain '/dev/log' socket, a - # zero-terminator seems to be required. this string is placed - # into a class variable so that it can be overridden if - # necessary. - log_format_string = '<%d>%s\000' - def encodePriority(self, facility, priority): """ Encode the facility and priority. You can pass in strings or @@ -781,14 +775,14 @@ class SysLogHandler(logging.Handler): We need to convert record level to lowercase, maybe this will change in the future. """ - msg = self.log_format_string % ( - self.encodePriority(self.facility, - self.mapPriority(record.levelname)), - msg) + prio = '<%d>' % self.encodePriority(self.facility, + self.mapPriority(record.levelname)) + prio = prio.encode('utf-8') #Message is a string. Convert to bytes as required by RFC 5424 msg = msg.encode('utf-8') if codecs: msg = codecs.BOM_UTF8 + msg + msg = prio + msg try: if self.unixsocket: try: