Skip to content

Commit b3fa3b2

Browse files
authored
Merge pull request #72 from MuRainBot/dev
合并Dev分支:修复长文本日志可能会被省略的问题
2 parents f1277ae + 0eba859 commit b3fa3b2

File tree

2 files changed

+32
-15
lines changed

2 files changed

+32
-15
lines changed

murainbot/utils/Logger.py

Lines changed: 31 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ def emit(self, record: logging.LogRecord) -> None:
7575
)
7676
message = record.getMessage()
7777

78-
# --- 核心渲染逻辑在这里 ---
7978
log_renderable = self.render(
8079
record=record,
8180
message=message,
@@ -110,23 +109,41 @@ def render(
110109
# 使用 rich 的内置日志样式
111110
path_text = Text(path, style="log.path", justify="right")
112111

113-
log_table = Table.grid(expand=True, padding=(0, 1))
114-
log_table.add_column(style="log.time")
115-
log_table.add_column(width=6)
116-
log_table.add_column(ratio=1)
117-
log_table.add_column(style="log.path")
112+
single_line_table = Table.grid(expand=True, padding=(0, 1))
113+
single_line_table.add_column(style="log.time")
114+
single_line_table.add_column(width=6)
115+
single_line_table.add_column(ratio=1)
116+
single_line_table.add_column(style="log.path")
117+
single_line_table.add_row(time_text, level_text, message_text, path_text)
118+
119+
capture_console = Console(width=self.console.width, record=True)
120+
with capture_console.capture() as capture:
121+
capture_console.print(single_line_table)
122+
123+
# 3. 分析捕获到的字符串,判断行数
124+
# .strip() 是为了去掉可能的尾部换行符
125+
rendered_text = capture.get().strip()
126+
is_multiline = "\n" in rendered_text
127+
128+
if not is_multiline:
129+
# 如果没有换行符,说明单行搞定
130+
final_layout = single_line_table
131+
else:
132+
# 否则,切换到健壮的两行布局
133+
meta_table = Table.grid(expand=True, padding=(0, 1))
134+
meta_table.add_column(style="log.time")
135+
meta_table.add_column(width=6)
136+
meta_table.add_column(ratio=1)
137+
meta_table.add_column(style="log.path")
138+
meta_table.add_row(time_text, level_text, Text(r"↩"), path_text)
118139

119-
log_table.add_row(
120-
time_text,
121-
level_text,
122-
message_text,
123-
path_text
124-
)
140+
final_layout = Group(meta_table, message_text)
125141

142+
# --- 组合最终布局和 Traceback ---
126143
if traceback:
127-
return Group(log_table, traceback)
144+
return Group(final_layout, traceback)
128145
else:
129-
return log_table
146+
return final_layout
130147

131148

132149
def init(logs_path: str = None, logger_level: int = logging.INFO):

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "murainbot"
7-
version = "0.1.0"
7+
version = "0.1.1"
88
authors = [
99
{ name="Xiaosu", email="[email protected]" },
1010
]

0 commit comments

Comments
 (0)