From a538920df7f8e540d30f1e79162a88c3a4717678 Mon Sep 17 00:00:00 2001 From: Valentin Lorentz Date: Tue, 9 Feb 2016 18:39:55 +0100 Subject: [PATCH] Catch more unicode-related exceptions when trying to write logs to a file. --- src/log.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/log.py b/src/log.py index b509823e9..2b0e4a7e9 100644 --- a/src/log.py +++ b/src/log.py @@ -127,16 +127,14 @@ class StdoutStreamHandler(logging.StreamHandler): class BetterFileHandler(logging.FileHandler): def emit(self, record): msg = self.format(record) - if not hasattr(types, "UnicodeType"): #if no unicode support... + try: self.stream.write(msg) - self.stream.write(os.linesep) - else: + except (UnicodeError, TypeError): try: - self.stream.write(msg) - self.stream.write(os.linesep) - except UnicodeError: self.stream.write(msg.encode("utf8")) - self.stream.write(os.linesep) + except (UnicodeError, TypeError): + self.stream.write(msg.encode("utf8").decode('ascii', 'replace')) + self.stream.write(os.linesep) try: self.flush() except OSError as e: