feat: improve Rich traceback rendering
This commit is contained in:
@@ -7,6 +7,11 @@ from rich.traceback import Traceback
|
|||||||
|
|
||||||
|
|
||||||
class FtRichHandler(Handler):
|
class FtRichHandler(Handler):
|
||||||
|
"""
|
||||||
|
Basic colorized logging handler using Rich.
|
||||||
|
Does not support all features of the standard logging handler, and uses a hard-coded log format
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, console: Console, *args, **kwargs) -> None:
|
def __init__(self, console: Console, *args, **kwargs) -> None:
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self._console = console
|
self._console = console
|
||||||
@@ -21,16 +26,15 @@ class FtRichHandler(Handler):
|
|||||||
name = Text(record.name, style="violet")
|
name = Text(record.name, style="violet")
|
||||||
log_level = Text(record.levelname, style=f"logging.level.{record.levelname.lower()}")
|
log_level = Text(record.levelname, style=f"logging.level.{record.levelname.lower()}")
|
||||||
gray_sep = Text(" - ", style="gray46")
|
gray_sep = Text(" - ", style="gray46")
|
||||||
|
|
||||||
|
self._console.print(
|
||||||
|
Text() + log_time + gray_sep + name + gray_sep + log_level + gray_sep + msg
|
||||||
|
)
|
||||||
|
tb = None
|
||||||
if record.exc_info:
|
if record.exc_info:
|
||||||
exc_type, exc_value, exc_traceback = record.exc_info
|
exc_type, exc_value, exc_traceback = record.exc_info
|
||||||
tb = Traceback.from_exception(exc_type, exc_value, exc_traceback)
|
tb = Traceback.from_exception(exc_type, exc_value, exc_traceback)
|
||||||
self._console.print(Text() + log_time + gray_sep + name + gray_sep + log_level)
|
|
||||||
self._console.print(tb)
|
self._console.print(tb)
|
||||||
else:
|
|
||||||
# pass
|
|
||||||
self._console.print(
|
|
||||||
Text() + log_time + gray_sep + name + gray_sep + log_level + gray_sep + msg
|
|
||||||
)
|
|
||||||
|
|
||||||
self.flush()
|
self.flush()
|
||||||
except RecursionError:
|
except RecursionError:
|
||||||
|
|||||||
Reference in New Issue
Block a user