2.9 KiB
2.9 KiB
任务02:日志系统实现
任务描述
实现Installer Builder项目的日志系统,包括Logger接口及其默认实现。日志系统将支持不同的日志级别、格式化输出和上下文信息,为整个项目提供统一的日志记录机制。
实现步骤
-
定义Logger接口:
- 在
internal/common/log包中创建logger.go文件 - 定义Logger接口,包含以下方法:
type Logger interface { Debug(msg string, args ...interface{}) Info(msg string, args ...interface{}) Warn(msg string, args ...interface{}) Error(msg string, args ...interface{}) Fatal(msg string, args ...interface{}) WithField(key string, value interface{}) Logger WithFields(fields map[string]interface{}) Logger }
- 在
-
定义日志级别:
- 创建LogLevel类型和常量:
type LogLevel int const ( DebugLevel LogLevel = iota InfoLevel WarnLevel ErrorLevel FatalLevel ) - 实现LogLevel的String()方法,用于字符串表示
- 创建LogLevel类型和常量:
-
实现DefaultLogger:
- 创建DefaultLogger结构体,实现Logger接口
- 支持配置日志级别、输出目标和格式
- 实现字段上下文,支持WithField和WithFields方法
- 支持彩色输出(可选,根据终端类型)
-
实现日志格式化:
- 支持不同的日志格式(文本、JSON)
- 包含时间戳、日志级别、消息和字段信息
- 实现格式化器接口,允许自定义格式
-
实现日志输出:
- 支持多种输出目标(控制台、文件、网络)
- 实现输出接口,允许自定义输出目标
- 支持同时输出到多个目标
-
创建日志工厂:
- 实现NewLogger函数,用于创建Logger实例
- 支持从配置创建Logger
- 提供默认的全局Logger实例
-
实现日志上下文传递:
- 支持从父Logger创建子Logger,继承上下文
- 实现上下文合并功能
单元测试要求
-
测试Logger接口实现:
- 验证所有方法按预期工作
- 测试不同日志级别的过滤
-
测试日志格式化:
- 验证不同格式的输出正确性
- 测试特殊字符和多行消息的处理
-
测试日志输出:
- 验证不同输出目标的正确性
- 测试并发写入的安全性
-
测试上下文功能:
- 验证WithField和WithFields方法
- 测试上下文继承和合并
-
测试性能:
- 基准测试不同日志级别和格式的性能
- 测试高并发场景下的性能
依赖关系
- 依赖任务01(项目初始化)
- 被任务03(错误处理框架)依赖
完成标准
- Logger接口已定义并文档完善
- DefaultLogger实现了所有接口方法
- 支持所有指定的日志级别
- 支持字段上下文和格式化
- 支持多种输出目标
- 所有单元测试通过
- 性能满足项目需求
- 代码符合项目的Go语言开发规范