- ✅ CocoaLumberjack 日志捕获
- ✅ os_log 日志捕获(OSLogStore)
- ✅ 实时日志流
- ✅ 日志级别筛选(单选层级模式:error > warning > info > debug > verbose)
- ✅ Subsystem/Category 筛选
- ✅ 文本搜索
- ✅ TraceId 关联
- ✅ 自动滚动
- ✅ 日志级别颜色标记
- ✅ 日志级别筛选优化 - 从多选改为单选层级模式
- ✅ 高级搜索语法 - 支持
level:error subsystem:Network message:"timeout"等语法
目标: 支持类 Splunk 的搜索语法
语法示例:
level:error subsystem:Network category:API
message:"timeout" | "connection refused"
timestamp:>2025-12-05T10:00:00
实现:
interface LogSearchQuery {
level?: LogLevel
subsystem?: string
category?: string
message?: string | RegExp
timestampRange?: [Date, Date]
traceId?: string
file?: string
function?: string
}
function parseSearchQuery(query: string): LogSearchQuery {
// 解析语法
}预估: 3 天
目标: 保存和快速访问搜索历史
功能:
- 最近 20 条搜索记录
- 保存常用搜索
- 快捷键调用
预估: 1 天
目标: 支持正则表达式搜索
UI:
[🔍 搜索] [.*] (正则模式切换)
预估: 1 天
目标: 显示日志级别分布和趋势
UI:
┌─ 日志统计 ─────────────────────────────────────┐
│ 总数: 12,345 │
│ ████████████████ Error: 123 (1.0%) │
│ ██████████ Warning: 456 (3.7%) │
│ ████████████████████████ Info: 5,678 (46%) │
│ ██████████████████ Debug: 6,088 (49.3%) │
└─────────────────────────────────────────────────┘
预估: 2 天
目标: 可视化日志时间分布
功能:
- 时间轴选择器
- 点击跳转
- 缩放支持
UI:
日志量
100│ ╭──╮
│ ╭╯ ╰╮ ╭─╮ ╭───╮
50│╭─╯ ╰──╯ ╰─────╯ ╰─
│
0└─────────────────────────> 时间
10:00 10:30 11:00 11:30
预估: 3 天
目标: 按小时/分钟显示日志热力图
功能:
- 颜色表示日志量
- 点击查看详情
- 异常时段高亮
预估: 2 天
目标: 完善请求链路追踪
功能:
- 自动注入 TraceId
- HTTP 请求关联
- 调用链可视化
实现:
// 自动在网络请求前设置 TraceId
Thread.current.threadDictionary["debugProbeTraceId"] = request.traceId预估: 2 天
目标: 点击日志跳转到关联的 HTTP 请求
功能:
- TraceId 关联
- 时间范围关联
- 一键跳转
预估: 2 天
目标: 显示日志调用堆栈
功能:
- 展开/折叠堆栈
- 点击跳转源码位置
- 符号化支持
预估: 3 天
目标: 当日志包含特定关键词时弹窗提醒
配置:
interface LogAlert {
id: string
name: string
condition: {
level?: LogLevel
keywords?: string[]
regex?: string
}
action: 'popup' | 'sound' | 'highlight'
}预估: 2 天
目标: 当错误日志超过阈值时告警
配置:
interface ErrorRateAlert {
threshold: number // 百分比
windowSeconds: number // 时间窗口
minSamples: number // 最小样本数
}预估: 2 天
目标: 自动识别异常日志模式
检测项:
- 重复错误
- 错误突增
- 新错误类型
预估: 3 天
目标: 导出日志为多种格式
格式:
- Plain Text
- JSON Lines (JSONL)
- CSV
预估: 1 天
目标: 生成日志分享链接
功能:
- 选择日志范围
- 生成临时链接
- 设置过期时间
预估: 2 天
目标: 自动归档历史日志
功能:
- 按日期归档
- 压缩存储
- 归档日志查看
预估: 3 天
目标: 支持百万级日志流畅浏览
实现:
import { useVirtualizer } from '@tanstack/react-virtual'
function LogList({ logs }) {
const virtualizer = useVirtualizer({
count: logs.length,
estimateSize: () => 32,
})
}预估: 2 天
目标: 减少内存占用
策略:
- 相同日志去重
- 内容压缩
- LRU 缓存
预估: 2 天
目标: 大日志量时流式加载
实现:
- WebSocket 流式推送
- 分片加载
- 无限滚动
预估: 2 天
| 阶段 | 功能 | 预估 | 状态 |
|---|---|---|---|
| Phase 1 | 高级搜索语法 | 3 天 | ✅ 已完成 |
| 搜索历史 | 1 天 | 待开发 | |
| 正则搜索 | 1 天 | ✅ 已完成 | |
| Phase 2 | 日志统计面板 | 2 天 | 待开发 |
| 日志时间线 | 3 天 | 待开发 | |
| 日志热力图 | 2 天 | 待开发 | |
| Phase 3 | TraceId 增强 | 2 天 | 待开发 |
| 日志与 HTTP 关联 | 2 天 | 待开发 | |
| 堆栈追踪 | 3 天 | 待开发 | |
| Phase 4 | 关键词告警 | 2 天 | 待开发 |
| 错误率告警 | 2 天 | 待开发 | |
| 异常模式检测 | 3 天 | 待开发 | |
| Phase 5 | 日志导出 | 1 天 | 待开发 |
| 日志分享 | 2 天 | 待开发 | |
| 日志归档 | 3 天 | 待开发 | |
| Phase 6 | 虚拟滚动 | 2 天 | 待开发 |
| 日志压缩 | 2 天 | 待开发 | |
| 流式加载 | 2 天 | 待开发 |