[Python-Dev] logging module broken because of locale

Jim Jewett jimjjewett at gmail.com
Thu Jul 20 19:06:32 CEST 2006


On 7/20/06, mihaiibanescu at yahoo.com <mihaiibanescu at yahoo.com> wrote:
> On Thu, Jul 20, 2006 at 11:39:27AM -0400, Jim Jewett wrote:

> > Even SysLogHandler.emit doesn't actually print the string; it is only
> > used as a lookup key for a dictionary whose keys are all lower-case
> > ASCII.  In theory, you could monkey-patch that dictionary to add
> > additional values, but then you might as well subclass to do the right
> > thing with your new keys.  (It *might* make sense to change the base
> > function and dictionary to accept unicode, including undotted-i
> > synonyms.)

> My initial approach was to compute the values of the dictionary based on the
> current locale - and that doesn't work.

Correct, it would need to be done by hand.  As part of the current
class construction,

    SysLogHandler.priority_names["info"] = SysLogHandler.LOG_INFO

You could add other entries, so that

    SysLogHandler.priority_names["my_info"] = SysLogHandler.LOG_INFO

If you also changed SysLogHandler.encode_priority to accept unicode
keys, you could even add u"info" and the equivalent with an
undotted-i.  I'm not sure this is worth doing, though, since they
supposedly represent symbolic constants.

-jJ


> The issue is not that the dictionary doesn't accept unicode, it's that there's
> no reliable way to do lookups in it. If you could sketch an example of what
> you had in mind with the monkey-patching, please do so, since I don't think I
> grasped the idea.
>
> Misa
>


More information about the Python-Dev mailing list