[Logging] Make Rich more copy-/paste-able (#5181)

* commit work, mostly untested

* v minor refactor

* force new renderer

* Code style changes

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
This commit is contained in:
Vexed 2021-08-30 21:15:26 +01:00 committed by GitHub
parent d13d6477c5
commit 7413e3c350
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -171,43 +171,30 @@ class RedLogRender(LogRender):
link_path=None,
logger_name=None,
):
output = Table.grid(padding=(0, 1))
output.expand = True
if self.show_time:
output.add_column(style="log.time")
if self.show_level:
output.add_column(style="log.level", width=self.level_width)
output.add_column(ratio=1, style="log.message", overflow="fold")
if self.show_path and path:
output.add_column(style="log.path")
if logger_name:
output.add_column()
row = []
output = Text()
if self.show_time:
log_time = log_time or console.get_datetime()
log_time_display = log_time.strftime(time_format or self.time_format)
if log_time_display == self._last_time:
row.append(Text(" " * len(log_time_display)))
output.append(" " * (len(log_time_display) + 1))
else:
row.append(Text(log_time_display))
output.append(f"{log_time_display} ", style="log.time")
self._last_time = log_time_display
if self.show_level:
row.append(level)
# The space needs to be added separately so that log level is colored by
# Rich.
output.append(level)
output.append(" ")
if logger_name:
output.append(f"[{logger_name}] ", style="bright_black")
row.append(Renderables(renderables))
output.append(*renderables)
if self.show_path and path:
path_text = Text()
path_text.append(path, style=f"link file://{link_path}" if link_path else "")
if line_no:
path_text.append(f":{line_no}")
row.append(path_text)
if logger_name:
logger_name_text = Text()
logger_name_text.append(f"[{logger_name}]", style="bright_black")
row.append(logger_name_text)
output.add_row(*row)
output.append(path_text)
return output
@ -286,7 +273,8 @@ class RedRichHandler(RichHandler):
line_no=record.lineno,
link_path=record.pathname if self.enable_link_path else None,
logger_name=record.name,
)
),
soft_wrap=True,
)
if traceback:
self.console.print(traceback)