diff --git a/src/calibre/utils/logging.py b/src/calibre/utils/logging.py index 3175f301d9..c23ec0c191 100644 --- a/src/calibre/utils/logging.py +++ b/src/calibre/utils/logging.py @@ -2,16 +2,12 @@ # vim:fileencoding=utf-8 # License: GPLv3 Copyright: 2009, Kovid Goyal -'A simplified logging system' - -DEBUG = 0 -INFO = 1 -WARN = 2 -ERROR = 3 +# A simplified logging system import io import sys import traceback +from contextlib import suppress from functools import partial from threading import Lock @@ -19,6 +15,12 @@ from calibre.prints import prints from polyglot.builtins import as_unicode +DEBUG = 0 +INFO = 1 +WARN = 2 +ERROR = 3 + + class Stream(object): def __init__(self, stream=None): @@ -31,7 +33,9 @@ class Stream(object): self._prints(text, end='') def flush(self): - self.stream.flush() + with suppress(BrokenPipeError): + # Don't fail if we were logging to a pipe and it got closed + self.stream.flush() def prints(self, level, *args, **kwargs): self._prints(*args, **kwargs) @@ -61,9 +65,6 @@ class ANSIStream(Stream): with ColoredStream(self.stream, self.color[level]): self._prints(*args, **kwargs) - def flush(self): - self.stream.flush() - class FileStream(Stream): @@ -94,9 +95,6 @@ class HTMLStream(Stream): self._prints(*args, **kwargs) self._prints(self.normal, end='') - def flush(self): - self.stream.flush() - class UnicodeHTMLStream(HTMLStream):