MujicaUI

Terminal & Code · #325

LogViewer 浅色主题渲染快照
浅色 · 渲染快照
LogViewer 深色主题渲染快照
深色 · 渲染快照

325 LogViewer · 日志查看器

用途

显示日志:按级别过滤、跟随尾部、关键字高亮,十万行也只构建可见行。

最小示例

lines := []code.LogLine{{Level: code.LogInfo, Text: "court opened"}, {Level: code.LogError, Text: "seal missing"}}
var state code.LogViewerState
view := func(c *ui.Context) {
	core.Use(c, core.Settings{})
	code.LogViewer(c, lines, &state, code.LogViewerOptions{}).Element.Height(240)
}
ui.Render(view, 400, 300, 1)

参数

func LogViewer(c *ui.Context, lines []LogLine, s *LogViewerState, opts LogViewerOptions) ChoiceResult。新追加的行增量过滤;级别变化时重新过滤一次,不逐帧计算。

字段类型默认值含义
LogLine.LevelLogLevelLogDebugLogDebug、LogInfo、LogWarn、LogError;越界 panic。
LogLine.Time, Texttime.Time, string—时间(零值不显示)与内容。
LogViewerState.Hidden[4]bool全显示被隐藏的级别。
LogViewerState.Querystring""高亮关键字,不区分大小写。
LogViewerState.Followbool首次为 true跟随尾部;向上滚动后 MyGo 暂停跟随,滚回底部恢复。
Disabledboolfalse不能改过滤与跟随。

状态

级别按钮按下表示显示;级别同时用文字(DEBUG/INFO/WARN/ERROR)与颜色区分;高亮为 Selection 背景、粗体与下划线;无日志空状态;禁用。

事件

Changed():级别过滤或跟随开关变化。

键盘操作

  • Tab 依次到达级别按钮、高亮输入框、跟随按钮与日志列表;Space 切换按钮。
  • 列表中方向键、PageUp/PageDown、Home/End 滚动。

限制

  • 只识别向末尾追加;替换为更短的切片会重新过滤。
  • 高亮不过滤行,只标出匹配。