Files
seqlog/CLAUDE.md
bourdon de39339620 重构:统一使用索引(Index)替代位置(Position)进行状态判断
## 主要变更

### 架构改进
- 明确索引(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>
2025-10-03 23:50:53 +08:00

1.8 KiB
Raw Permalink Blame History

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 ./...

常用任务

添加新功能

  1. 在相应的包中创建新文件
  2. 实现功能并编写测试
  3. 更新文档说明

发布新版本

  1. 更新版本号
  2. 运行完整测试套件
  3. 创建 git tag
  4. 推送到远程仓库

技术栈

  • 语言: Go 1.25.1
  • 模块管理: Go Modules