logging of strings with broken encoding

Stefan Behnel stefan_ml at behnel.de
Thu Jul 2 13:01:37 EDT 2009


Thomas Guettler wrote:
> My quick fix is this:
> 
> class MyFormatter(logging.Formatter):
>     def format(self, record):
>         msg=logging.Formatter.format(self, record)
>         if isinstance(msg, str):
>             msg=msg.decode('utf8', 'replace')
>         return msg
> 
> But I still think handling of non-ascii byte strings should be better.
> A broken logging message is better than none.

Erm, may I note that this is not a problem in the logging library but in
the code that uses it? How should the logging library know what you meant
by passing that byte string in the first place? And where is the difference
between accidentally passing a byte string and accidentally passing another
non-printable object? Handling this "better" may simply hide the bugs in
your code, I don't find that's any "better" at all.

Anyway, this has been fixed in Py3.

Stefan



More information about the Python-list mailing list