mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Fix app.messagelog does not filled after moving to logging module
This commit is contained in:
@@ -153,6 +153,7 @@ class Sphinx(object):
|
||||
self._translators = {} # type: Dict[unicode, nodes.GenericNodeVisitor]
|
||||
|
||||
# keep last few messages for traceback
|
||||
# This will be filled by sphinx.util.logging.LastMessagesWriter
|
||||
self.messagelog = deque(maxlen=10) # type: deque
|
||||
|
||||
# say hello to the world
|
||||
|
||||
@@ -406,6 +406,17 @@ class SafeEncodingWriter(object):
|
||||
self.stream.flush()
|
||||
|
||||
|
||||
class LastMessagesWriter(object):
|
||||
"""Stream writer which memories last 10 messages to save trackback"""
|
||||
def __init__(self, app, stream):
|
||||
# type: (IO) -> None
|
||||
self.app = app
|
||||
|
||||
def write(self, data):
|
||||
# type: (unicode) -> None
|
||||
self.app.messagelog.append(data)
|
||||
|
||||
|
||||
def setup(app, status, warning):
|
||||
# type: (Sphinx, IO, IO) -> None
|
||||
"""Setup root logger for Sphinx"""
|
||||
@@ -427,5 +438,12 @@ def setup(app, status, warning):
|
||||
warning_handler.addFilter(WarningLogRecordTranslator(app))
|
||||
warning_handler.setLevel(logging.WARNING)
|
||||
warning_handler.setFormatter(ColorizeFormatter())
|
||||
|
||||
messagelog_handler = logging.StreamHandler(LastMessagesWriter(app, status))
|
||||
messagelog_handler.addFilter(InfoFilter())
|
||||
messagelog_handler.setLevel(VERBOSITY_MAP[app.verbosity])
|
||||
messagelog_handler.setFormatter(ColorizeFormatter())
|
||||
|
||||
logger.addHandler(info_handler)
|
||||
logger.addHandler(warning_handler)
|
||||
logger.addHandler(messagelog_handler)
|
||||
|
||||
Reference in New Issue
Block a user