From d508b2919f2ab2a24dc61fed65d1c3f178f74490 Mon Sep 17 00:00:00 2001 From: "vinay.sajip" Date: Thu, 20 Jul 2006 23:20:12 +0000 Subject: [PATCH] Addressed SF#1524081 by using a dictionary to map level names to syslog priority names, rather than a string.lower(). git-svn-id: http://svn.python.org/projects/python/trunk@50740 6015fed2-1504-0410-9fe1-9d1591cc4771 --- Lib/logging/handlers.py | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/Lib/logging/handlers.py b/Lib/logging/handlers.py index 70bd5d4fae..35529501a7 100644 --- a/Lib/logging/handlers.py +++ b/Lib/logging/handlers.py @@ -562,6 +562,18 @@ class SysLogHandler(logging.Handler): "local7": LOG_LOCAL7, } + #The map below appears to be trivially lowercasing the key. However, + #there's more to it than meets the eye - in some locales, lowercasing + #gives unexpected results. See SF #1524081: in the Turkish locale, + #"INFO".lower() != "info" + priority_map = { + "DEBUG" : "debug", + "INFO" : "info", + "WARNING" : "warning", + "ERROR" : "error", + "CRITICAL" : "critical" + } + def __init__(self, address=('localhost', SYSLOG_UDP_PORT), facility=LOG_USER): """ Initialize a handler. @@ -598,7 +610,7 @@ class SysLogHandler(logging.Handler): # necessary. log_format_string = '<%d>%s\000' - def encodePriority (self, facility, priority): + def encodePriority(self, facility, priority): """ Encode the facility and priority. You can pass in strings or integers - if strings are passed, the facility_names and @@ -619,6 +631,16 @@ class SysLogHandler(logging.Handler): self.socket.close() logging.Handler.close(self) + def mapPriority(self, levelName): + """ + Map a logging level name to a key in the priority_names map. + This is useful in two scenarios: when custom levels are being + used, and in the case where you can't do a straightforward + mapping by lowercasing the logging level name because of locale- + specific issues (see SF #1524081). + """ + return self.priority_map.get(levelName, "warning") + def emit(self, record): """ Emit a record. @@ -633,8 +655,8 @@ class SysLogHandler(logging.Handler): """ msg = self.log_format_string % ( self.encodePriority(self.facility, - string.lower(record.levelname)), - msg) + self.mapPriority(record.levelname)), + msg) try: if self.unixsocket: try: -- 2.11.4.GIT