pkg/log
📝 `pkg/log/log.go` — 统一日志门面。
封装 charmbracelet/log,提供分级彩色日志、命令标题、Markdown 渲染、调试开关。全项目统一调用,便于控制输出风格与级别。
📁 源码:
pkg/log/log.go
核心类型
| 符号 | 源码 | 说明 |
|---|---|---|
Logger | L47 | 内部 logger 状态 |
formatLogMessage | L76 | 统一格式化 |
GetLogger() | L222 | 取 *slog.Logger |
slogToCharm | L228 | slog→charm 适配 |
分级函数
| 函数 | 源码 | 级别 |
|---|---|---|
Debug | L119 | 🔍 调试 |
Info | L130 | ℹ️ 信息 |
Warn | L141 | ⚠️ 警告 |
Error | L152 | ❌ 错误 |
Fatal | L164 | 💀 致命(退出) |
Success | L176 | ✅ 成功 |
辅助
| 函数 | 源码 | 说明 |
|---|---|---|
CommandTitle(title) | L184 | 命令标题横幅 |
CommandHelp(text) | L195 | 帮助文本(Markdown 渲染) |
EnableDebug() | L201 | 开 Debug 级 |
EnableSilence() | L207 | 静默 |
IsDebugEnabled() | L214 | 查询开关 |
级别流
snir 自身与依赖库的日志如何汇聚到同一输出:
slog 适配
一个门面收编两类库
GetLogger 返回标准库 *slog.Logger,通过 slogToCharm 桥接到 charm 输出。
→ snir 自身用 log.Info 等 charm 风格函数,而依赖库(如 chromedp)若用 slog,也能纳入同一套级别开关与彩色风格,不会出现两套日志各打各的。
CommandHelp Markdown
CommandHelp 借助 glamour 把 Markdown 渲染成终端彩色文本,让 CLI 帮助更美观。