主要更改: 1. 核心重命名 - Seqlog -> LogHub (更准确地反映其作为日志中枢的角色) - NewSeqlog() -> NewLogHub() - LogCursor -> ProcessCursor (更准确地反映其用于处理场景) - seqlog_manager.go -> loghub.go (文件名与结构体名对应) 2. TopicProcessor.Reset 增强 - 如果正在运行且没有待处理的日志,会自动停止后重置 - 如果有待处理的日志,返回详细错误(显示已处理/总记录数) - 简化了 LogHub.ResetTopic,移除显式 Stop 调用 3. 新增查询方法 - TopicProcessor.QueryFromFirst(count) - 从第一条记录向索引递增方向查询 - TopicProcessor.QueryFromLast(count) - 从最后一条记录向索引递减方向查询 - LogHub.QueryFromFirst(topic, count) - LogHub.QueryFromLast(topic, count) 4. 测试覆盖 - 添加 query_test.go - QueryFromProcessing 测试 - 添加 TestQueryFromFirstAndLast - TopicProcessor 查询测试 - 添加 TestLogHubQueryFromFirstAndLast - LogHub 查询测试 - 添加 TestTopicResetWithPendingRecords - Reset 增强功能测试 5. 示例代码 - 添加 example/get_record/ - 演示 QueryFromProcessing 用法 - 更新所有示例以使用 LogHub 和新 API 所有测试通过 ✅ 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Seqlog Web 演示
一个简单的 Web 应用,展示 Seqlog 的实际使用场景。
功能
后端模拟业务
- 每 2 秒自动生成业务日志
- 随机生成不同 topic(app、api、database、cache)
- 随机生成不同操作(查询、插入、更新、删除、备份、恢复、同步等)
- 随机日志大小(2KB ~ 10MB):
- 80% 小日志(2KB - 100KB)
- 15% 中日志(100KB - 1MB)
- 5% 大日志(1MB - 10MB)
Web 查询界面
- 查看所有 topics
- 查看每个 topic 的统计信息(显示实际字节数)
- 查询日志(支持向前/向后翻页)
- 实时自动刷新
- 日志状态标注(已处理/处理中/待处理)
快速启动
cd example/webapp
go run main.go
使用说明
- 选择 Topic: 点击左侧的 topic 列表
- 查看统计: 左侧会显示该 topic 的统计信息(包括总字节数)
- 查看日志: 右侧显示日志内容,带状态标注
- 刷新: 点击"刷新日志"按钮或等待自动刷新
- 翻页: 使用"向前翻页"和"向后翻页"按钮
- 自定义范围: 修改显示范围的数字,控制查询条数
界面说明
- 绿色边框: 已处理的日志
- 黄色边框: 正在处理的日志
- 灰色边框: 待处理的日志
性能测试
由于日志大小范围很大(2KB ~ 10MB),可以观察到:
- 小日志处理速度很快
- 大日志会占用更多存储空间
- 统计信息会显示真实的字节数增长
API 接口
GET /api/topics- 获取所有 topicsGET /api/stats?topic=<name>- 获取统计信息GET /api/query?topic=<name>&backward=10&forward=10- 查询日志POST /api/write- 手动写入日志
技术栈
- 后端: Go + Seqlog
- 前端: 原生 HTML/CSS/JavaScript
- 无需额外依赖