## 主要变更 ### 架构改进 - 明确索引(Index)与偏移(Offset)的职责分离 - Index: 记录序号(逻辑概念),用于状态判断 - Offset: 文件字节位置(物理概念),仅用于 I/O 操作 ### API 变更 - 删除所有 Position 相关方法: - `LogCursor.StartPos()/EndPos()` - `LogTailer.GetStartPos()/GetEndPos()` - `TopicProcessor.GetProcessingPosition()/GetReadPosition()` - `Seqlog.GetProcessingPosition()/GetReadPosition()` - 新增索引方法: - `LogCursor.StartIndex()/EndIndex()` - `LogTailer.GetStartIndex()/GetEndIndex()` - `TopicProcessor.GetProcessingIndex()/GetReadIndex()` - `Seqlog.GetProcessingIndex()/GetReadIndex()` - `Seqlog.GetProcessor()` - 获取 processor 实例以访问 Index ### 查询接口变更 - `RecordQuery.QueryOldest(startIndex, count, startIdx, endIdx)` - 使用索引参数 - `RecordQuery.QueryNewest(endIndex, count, startIdx, endIdx)` - 使用索引参数 - `RecordQuery.QueryAt(position, direction, count, startIdx, endIdx)` - startIdx/endIdx 用于状态判断 ### 性能优化 - 状态判断改用整数比较,不再需要计算偏移量 - 减少不必要的索引到偏移的转换 - 只在实际文件 I/O 时才获取 offset ### 测试更新 - 更新所有测试用例使用新的 Index API - 更新示例代码(topic_processor_example.go, webapp/main.go) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1.8 KiB
1.8 KiB
CLAUDE.md
本文件为 Claude Code 提供项目上下文信息。
语言偏好:请使用中文进行所有交流和文档编写。
项目概述
seqlog 是一个 Go 语言日志收集和处理库,模块路径为 code.tczkiot.com/seqlog。
核心特性:
- 单文件日志处理:专注于单个日志文件的读取和处理
- 游标尺机制:通过游标跟踪日志文件的读取位置,支持断点续读
- 日志收集:提供高效的日志收集和解析能力
- 使用 Go 1.25.1 版本开发
适用场景:
- 日志文件监控和采集
- 增量日志读取和处理
- 日志文件位置追踪
项目结构
seqlog/
├── go.mod # Go 模块定义文件
└── CLAUDE.md # Claude Code 项目文档
开发指南
环境要求
- Go 1.25.1 或更高版本
- 模块路径:
code.tczkiot.com/seqlog
代码规范
- 遵循 Go 官方代码风格指南
- 使用
go fmt格式化代码 - 编写单元测试覆盖核心功能
- 导出的函数和类型需要添加文档注释
- 中英文混排规范:注释等文字中,中英文之间、中文与阿拉伯数字之间必须添加空格
- ✅ 正确示例:
// 创建 logger 实例,默认日志级别为 INFO - ✅ 正确示例:
// 最多支持 100 个并发连接 - ❌ 错误示例:
// 创建logger实例,默认日志级别为INFO - ❌ 错误示例:
// 最多支持100个并发连接
- ✅ 正确示例:
构建和测试
# 运行测试
go test ./...
# 构建项目
go build ./...
# 运行代码检查
go vet ./...
常用任务
添加新功能
- 在相应的包中创建新文件
- 实现功能并编写测试
- 更新文档说明
发布新版本
- 更新版本号
- 运行完整测试套件
- 创建 git tag
- 推送到远程仓库
技术栈
- 语言: Go 1.25.1
- 模块管理: Go Modules