diff --git a/Lib/fontTools/misc/loggingTools.py b/Lib/fontTools/misc/loggingTools.py index aacc08582..b00fff0d3 100644 --- a/Lib/fontTools/misc/loggingTools.py +++ b/Lib/fontTools/misc/loggingTools.py @@ -530,67 +530,6 @@ def deprecateFunction(msg, category=UserWarning): return decorator -class LastResortLogger(logging.Logger): - """ Adds support for 'lastResort' handler introduced in Python 3.2. - It allows to print messages to sys.stderr even when no explicit handler - was configured. - To enable it, you can do: - - import logging - logging.lastResort = StderrHandler(logging.WARNING) - logging.setLoggerClass(LastResortLogger) - """ - - def callHandlers(self, record): - # this is the same as Python 3.5's logging.Logger.callHandlers - c = self - found = 0 - while c: - for hdlr in c.handlers: - found = found + 1 - if record.levelno >= hdlr.level: - hdlr.handle(record) - if not c.propagate: - c = None # break out - else: - c = c.parent - if found == 0: - if logging.lastResort: - if record.levelno >= logging.lastResort.level: - logging.lastResort.handle(record) - elif ( - logging.raiseExceptions - and not self.manager.emittedNoHandlerWarning - ): - sys.stderr.write( - "No handlers could be found for logger" - ' "%s"\n' % self.name - ) - self.manager.emittedNoHandlerWarning = True - - -class StderrHandler(logging.StreamHandler): - """ This class is like a StreamHandler using sys.stderr, but always uses - whateve sys.stderr is currently set to rather than the value of - sys.stderr at handler construction time. - """ - - def __init__(self, level=logging.NOTSET): - """ - Initialize the handler. - """ - logging.Handler.__init__(self, level) - - @property - def stream(self): - # the try/execept avoids failures during interpreter shutdown, when - # globals are set to None - try: - return sys.stderr - except AttributeError: - return __import__("sys").stderr - - if __name__ == "__main__": import doctest sys.exit(doctest.testmod(optionflags=doctest.ELLIPSIS).failed) diff --git a/Tests/misc/loggingTools_test.py b/Tests/misc/loggingTools_test.py index 18b71b192..fd64b8b3a 100644 --- a/Tests/misc/loggingTools_test.py +++ b/Tests/misc/loggingTools_test.py @@ -6,15 +6,11 @@ from fontTools.misc.loggingTools import ( configLogger, ChannelsFilter, LogMixin, - StderrHandler, - LastResortLogger, - _resetExistingLoggers, ) import logging import textwrap import time import re -import sys import pytest @@ -179,32 +175,3 @@ def test_LogMixin(): assert isinstance(b.log, logging.Logger) assert a.log.name == "loggingTools_test.A" assert b.log.name == "loggingTools_test.B" - - -@pytest.mark.skipif(sys.version_info[:2] > (2, 7), reason="only for python2.7") -@pytest.mark.parametrize( - "reset", [True, False], ids=["reset", "no-reset"] -) -def test_LastResortLogger(reset, capsys, caplog): - current = logging.getLoggerClass() - msg = "The quick brown fox jumps over the lazy dog" - try: - if reset: - _resetExistingLoggers() - else: - caplog.set_level(logging.ERROR, logger="myCustomLogger") - logging.lastResort = StderrHandler(logging.WARNING) - logging.setLoggerClass(LastResortLogger) - logger = logging.getLogger("myCustomLogger") - logger.error(msg) - finally: - del logging.lastResort - logging.setLoggerClass(current) - - captured = capsys.readouterr() - if reset: - assert msg in captured.err - msg not in caplog.text - else: - msg in caplog.text - msg not in captured.err