# fastlog
**Repository Path**: MM-Q/fastlog
## Basic Information
- **Project Name**: fastlog
- **Description**: FastLog 是一个企业级高性能 Go 日志库,专为高并发场景设计。通过原子时间戳缓存、批量处理优化和资源泄漏防护等核心技术,实现了 152.7万条/秒 的极致吞吐量和 0.65μs 的超低延迟。采用依赖注入架构避免循环依赖,支持智能背压控制和优雅关闭,确保生产环境的稳定性和可靠性。
- **Primary Language**: Go
- **License**: GPL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2025-01-15
- **Last Updated**: 2025-09-30
## Categories & Tags
**Categories**: logging
**Tags**: Go语言, 日志
## README
# FastLog - 高性能 Go 日志库


[](https://deepwiki.com/QiaoMuDe/fastlog)
FastLog 是一个企业级高性能 Go 日志库,专为高并发场景设计。通过原子时间戳缓存、批量处理优化和资源泄漏防护等核心技术,实现了 **152.7万条/秒** 的极致吞吐量和 **0.65μs** 的超低延迟。采用依赖注入架构避免循环依赖,支持智能背压控制和优雅关闭,确保生产环境的稳定性和可靠性。
## 🌟 核心特性
### 🚀 **极致性能架构**
- **异步非阻塞处理** - 基于 channel 的生产者-消费者模式,避免业务阻塞
- **高效缓冲管理** - 使用 sync.Pool 对象池复用缓冲区,减少内存分配开销
- **原子时间戳缓存** - 使用原子操作替代读写锁,3-5倍性能提升,快路径完全无锁
- **批量处理优化** - 1000条日志批量格式化和写入,减少系统调用开销
- **零拷贝优化** - 直接格式化到目标缓冲区,避免多次内存拷贝
### 🛡️ **企业级稳定性**
- **依赖注入架构** - 通过 processorDependencies 接口避免循环依赖,提升代码可测试性
- **资源泄漏防护** - defer 保护机制确保对象池正确回收,panic 恢复保证系统稳定
- **智能背压控制** - 根据通道使用率(70%→98%)自动丢弃低优先级日志,防止内存溢出
- **优雅关闭机制** - 确保所有日志完整写入后再关闭,支持超时控制和并发安全
- **配置自动修正** - 智能验证和修正不合理配置,确保系统稳定运行
### 📊 **丰富的功能特性**
- **五级日志系统** - DEBUG/INFO/WARN/ERROR/FATAL,支持动态级别调整
- **八种输出格式** - Detailed/Json/JsonSimple/Simple/Structured/BasicStructured/SimpleTimestamp/Custom,满足不同场景需求
- **双输出通道** - 文件和控制台独立缓冲区,分别优化性能
- **智能日志轮转** - 基于大小(MB)、时间(天)、数量的轮转策略,支持压缩和本地时间
- **终端颜色支持** - 基于 colorlib 的丰富颜色和样式,可配置禁用
### 🔧 **开发友好设计**
- **简洁 API 设计** - 提供 New/NewCfg 简写函数,支持格式化和非格式化方法
- **完善的测试覆盖** - 包含并发测试、内存泄漏测试、边界条件测试等
- **详细的调用信息** - 自动获取文件名、函数名、行号,支持运行时调用栈
- **灵活的配置系统** - 支持环境变量、配置文件等多种配置方式
- **零外部依赖冲突** - 仅依赖 colorlib 和 logrotatex,版本兼容性良好
## 📦 安装与引入
```bash
# 确保在项目路径下存在 go.mod 文件
go get gitee.com/MM-Q/fastlog
```
```go
import "gitee.com/MM-Q/fastlog"
```
## 🤠 获取性能测试报告
```bash
go test -v -run TestConcurrentFastLog
```
## 🚀 快速开始
### 基础使用示例
```go
package main
import "gitee.com/MM-Q/fastlog"
func main() {
// 创建日志配置
config := fastlog.NewFastLogConfig("logs", "app.log")
// 创建日志实例
logger := fastlog.NewFastLog(config)
defer logger.Close()
// 记录不同级别的日志
logger.Debug("这是调试信息")
logger.Info("这是一条信息日志")
logger.Warn("这是一个警告")
logger.Error("发生了一个错误")
// 使用格式化方法
logger.Infof("用户 %s 登录成功,IP: %s", "张三", "192.168.1.1")
logger.Errorf("数据库连接失败,重试次数: %d", 3)
}
```
### 预设配置模式(推荐)
FastLog 提供了5种预设配置模式,覆盖常见使用场景,让配置更加简洁:
```go
package main
import "gitee.com/MM-Q/fastlog"
func main() {
// 开发模式:双输出,详细信息,快速响应,彩色显示
devLogger := fastlog.DevConfig("logs", "dev.log")
logger := fastlog.NewFastLog(devLogger)
defer logger.Close()
// 生产模式:高性能,结构化,长期存储,空间优化
// prodLogger := fastlog.ProdConfig("logs", "prod.log")
// 控制台模式:纯控制台,视觉友好,快速响应,轻量级
// consoleLogger := fastlog.ConsoleConfig()
// 文件模式:纯文件,结构化,中等性能,中期存储
// fileLogger := fastlog.FileConfig("logs", "file.log")
// 静默模式:最小输出,极致性能,高效格式,长期存储
// silentLogger := fastlog.SilentConfig("logs", "silent.log")
// 记录日志
logger.Info("应用程序启动")
logger.Debugf("用户ID: %d, 操作: %s", 12345, "登录")
logger.Warn("内存使用率较高: 85%")
logger.Error("数据库连接失败")
}
```
#### 可用的预设配置模式
- `DevConfig(logDir, logFile)` - 开发模式:双输出、详细信息、快速响应、彩色显示、短期保留、**禁用背压**(确保调试时所有日志都被记录)
- `ProdConfig(logDir, logFile)` - 生产模式:高性能、结构化、合理级别、长期存储、空间优化、无装饰、**启用背压**(高负载时自动保护系统稳定性)
- `ConsoleConfig()` - 控制台模式:纯控制台、视觉友好、快速响应、轻量级、即时性、**禁用背压**(确保实时查看所有日志)
- `FileConfig(logDir, logFile)` - 文件模式:纯文件、结构化、中等性能、中期存储、无装饰、**启用背压**(保持系统稳定性)
- `SilentConfig(logDir, logFile)` - 静默模式:最小输出、极致性能、高效格式、长期存储、空间优化、**启用背压**(极致性能下的系统保护)
### 简化创建方式
```go
package main
import "gitee.com/MM-Q/fastlog"
func main() {
// 使用简写函数创建
config := fastlog.NewCfg("logs", "app.log") // NewCfg 是 NewFastLogConfig 的简写
logger := fastlog.New(config) // New 是 NewFastLog 的简写
defer logger.Close()
logger.Info("使用简写函数创建的日志")
}
```
## ⚙️ 高级配置
### 完整配置示例
```go
package main
import (
"time"
"gitee.com/MM-Q/fastlog"
)
func main() {
// 创建配置
config := fastlog.NewFastLogConfig("logs", "app.log")
// 配置日志级别和格式
config.LogLevel = fastlog.DEBUG // 设置日志级别
config.LogFormat = fastlog.Json // 设置 JSON 格式
// 配置缓冲和刷新
config.FlushInterval = 500 * time.Millisecond // 设置刷新间隔
config.ChanIntSize = 20000 // 设置通道大小
// 配置文件轮转
config.MaxSize = 50 // 最大文件大小 50MB
config.MaxAge = 30 // 保留 30 天
config.MaxFiles = 10 // 最多 10 个备份
config.LocalTime = true // 使用本地时间
config.Compress = true // 启用压缩
// 配置输出选项
config.OutputToConsole = true // 启用控制台输出
config.OutputToFile = true // 启用文件输出
config.Color = true // 启用颜色
config.Bold = true // 启用加粗
// 创建日志实例
logger := fastlog.NewFastLog(config)
defer logger.Close()
// 记录各种级别的日志
logger.Debug("调试信息:程序启动")
logger.Info("应用程序已启动")
logger.Warn("配置文件使用默认值")
logger.Error("网络连接超时")
}
```
### 环境配置示例
```go
// 推荐:根据环境使用不同的预设配置
func createLogger(env string) *fastlog.FastLog {
var config *fastlog.FastLogConfig
switch env {
case "development":
config = fastlog.DevConfig("logs", "app.log")
case "production":
config = fastlog.ProdConfig("logs", "app.log")
case "console":
config = fastlog.ConsoleConfig()
case "file":
config = fastlog.FileConfig("logs", "app.log")
case "silent":
config = fastlog.SilentConfig("logs", "app.log")
default:
config = fastlog.NewFastLogConfig("logs", "app.log") // 默认配置
}
return fastlog.NewFastLog(config)
}
```
## 📝 日志格式
FastLog 支持八种不同的日志格式:
| 格式名称 | 枚举值 | 说明 |
|---------|--------|------|
| Detailed | `fastlog.Detailed` | 详细格式,包含时间、级别、文件、函数、行号等完整信息(默认) |
| Json | `fastlog.Json` | JSON 格式输出,便于日志分析和处理 |
| JsonSimple | `fastlog.JsonSimple` | JSON 简单格式(无文件信息) |
| Simple | `fastlog.Simple` | 简约格式,仅包含时间、级别和消息 |
| Structured | `fastlog.Structured` | 结构化格式,使用分隔符组织信息 |
| BasicStructured | `fastlog.BasicStructured` | 基础结构化格式(无文件信息) |
| SimpleTimestamp | `fastlog.SimpleTimestamp` | 简单时间格式 |
| Custom | `fastlog.Custom` | 自定义格式,直接输出原始消息 |
### 格式示例
#### 1. Detailed 格式
```
2025-01-15 10:30:45 | INFO | main.go:main:15 - 用户登录成功
2025-01-15 10:30:46 | ERROR | database.go:Connect:23 - 数据库连接失败
```
#### 2. JSON 格式
```json
{"time":"2025-01-15 10:30:45","level":"INFO","file":"main.go","function":"main","line":15,"message":"用户登录成功"}
{"time":"2025-01-15 10:30:46","level":"ERROR","file":"database.go","function":"Connect","line":23,"message":"数据库连接失败"}
```
#### 3. JsonSimple 格式
```json
{"time":"2025-01-15 10:30:45","level":"INFO","message":"用户登录成功"}
{"time":"2025-01-15 10:30:46","level":"ERROR","message":"数据库连接失败"}
```
#### 4. Simple 格式
```
2025-01-15 10:30:45 | INFO | 用户登录成功
2025-01-15 10:30:46 | ERROR | 数据库连接失败
```
#### 5. Structured 格式
```
T:2025-01-15 10:30:45|L:INFO |F:main.go:main:15|M:用户登录成功
T:2025-01-15 10:30:46|L:ERROR |F:database.go:Connect:23|M:数据库连接失败
```
#### 6. BasicStructured 格式
```
T:2025-01-15 10:30:45|L:INFO |M:用户登录成功
T:2025-01-15 10:30:46|L:ERROR |M:数据库连接失败
```
#### 7. SimpleTimestamp 格式
```
2025-01-15 10:30:45 INFO 用户登录成功
2025-01-15 10:30:46 ERROR 数据库连接失败
```
#### 8. Custom 格式
```go
// 使用 Custom 格式时,直接输出传入的消息内容
logger.Info("自定义格式的日志消息") // 输出: 自定义格式的日志消息
```
## 🎯 核心特性详解
### 智能背压控制
FastLog 实现了智能背压控制机制,根据日志通道的使用率自动调整日志处理策略:
- **98%+ 使用率**: 只保留 FATAL 级别日志
- **95%+ 使用率**: 只保留 ERROR 及以上级别日志
- **90%+ 使用率**: 只保留 WARN 及以上级别日志
- **80%+ 使用率**: 只保留 INFO 及以上级别日志
这确保了在高负载情况下系统的稳定性,避免日志积压导致的内存问题。
#### 禁用背压控制
在某些场景下(如调试、开发环境),你可能需要确保所有日志都被记录,可以通过以下方式禁用背压控制:
```go
// 方式1: 使用预设配置(推荐)
// 开发模式和控制台模式默认禁用背压
devLogger := fastlog.DevConfig("logs", "debug.log")
consoleLogger := fastlog.ConsoleConfig()
// 方式2: 手动配置
config := fastlog.NewFastLogConfig("logs", "debug.log")
config.DisableBackpressure = true // 禁用背压控制
logger := fastlog.NewFastLog(config)
// 现在即使在高负载下,所有日志都会被记录
logger.Debug("这条调试日志不会被丢弃")
logger.Info("这条信息日志也会被完整记录")
```
**注意**: 禁用背压控制可能在极高负载下导致内存占用增加,建议仅在开发调试环境中使用。
### 批量处理优化
- **批量大小**: 默认 1000 条日志为一批
- **缓冲区管理**: 文件缓冲区 32KB 初始容量,控制台缓冲区 8KB 初始容量
- **智能刷新**: 90% 阈值触发或定时刷新(默认 500ms)
- **内存优化**: 预分配缓冲区,减少 GC 压力
### 日志轮转功能
FastLog 基于 `logrotatex` 提供强大的日志轮转功能:
```go
config := fastlog.NewFastLogConfig("logs", "app.log")
config.MaxSize = 10 // 文件大小超过 10MB 时轮转
config.MaxAge = 7 // 保留 7 天的日志文件
config.MaxFiles = 5 // 最多保留 5 个备份文件
config.LocalTime = true // 使用本地时间命名
config.Compress = true // 启用压缩功能
```
轮转后的日志文件命名格式:`app-2025-01-15T10-30-45.123.log`
## 📊 API 参考
### 核心函数
| 函数名称 | 参数 | 返回值 | 说明 |
|---------|------|--------|------|
| `NewFastLogConfig` | `logDirPath string, logFileName string` | `*FastLogConfig` | 创建基础日志配置实例 |
| `DevConfig` | `logDirPath string, logFileName string` | `*FastLogConfig` | 创建开发模式配置 |
| `ProdConfig` | `logDirPath string, logFileName string` | `*FastLogConfig` | 创建生产模式配置 |
| `ConsoleConfig` | 无 | `*FastLogConfig` | 创建控制台模式配置 |
| `FileConfig` | `logDirPath string, logFileName string` | `*FastLogConfig` | 创建文件模式配置 |
| `SilentConfig` | `logDirPath string, logFileName string` | `*FastLogConfig` | 创建静默模式配置 |
| `NewFastLog` | `cfg *FastLogConfig` | `*FastLog` | 根据配置创建日志记录器实例 |
| `New` | `cfg *FastLogConfig` | `*FastLog` | `NewFastLog` 的简写形式 |
| `NewCfg` | `logDirPath string, logFileName string` | `*FastLogConfig` | `NewFastLogConfig` 的简写形式 |
### 配置字段
| 字段名称 | 类型 | 默认值 | 说明 |
|---------|------|--------|------|
| `LogDirName` | `string` | `"logs"` | 日志目录路径 |
| `LogFileName` | `string` | `"app.log"` | 日志文件名 |
| `OutputToConsole` | `bool` | `true` | 是否输出到控制台 |
| `OutputToFile` | `bool` | `true` | 是否输出到文件 |
| `FlushInterval` | `time.Duration` | `500ms` | 缓冲区刷新间隔 |
| `LogLevel` | `LogLevel` | `INFO` | 日志级别 |
| `ChanIntSize` | `int` | `10000` | 通道大小 |
| `LogFormat` | `LogFormatType` | `Basic` | 日志格式 |
| `Color` | `bool` | `true` | 是否启用颜色输出 |
| `Bold` | `bool` | `true` | 是否启用字体加粗 |
| `MaxSize` | `int` | `10` | 最大日志文件大小(MB) |
| `MaxAge` | `int` | `0` | 日志文件最大保留天数(0表示不限制) |
| `MaxFiles` | `int` | `0` | 最大备份文件数量(0表示不限制) |
| `LocalTime` | `bool` | `true` | 是否使用本地时间 |
| `Compress` | `bool` | `false` | 是否启用日志压缩 |
| `BatchSize` | `int` | `1000` | 批处理大小 |
| `DisableBackpressure` | `bool` | `false` | 是否禁用背压控制(默认启用背压保护) |
### 日志记录方法
#### 基础日志方法(不支持格式化)
| 方法名称 | 参数 | 日志级别 | 说明 |
|---------|------|----------|------|
| `Debug` | `v ...any` | DEBUG | 记录调试信息 |
| `Info` | `v ...any` | INFO | 记录一般信息 |
| `Warn` | `v ...any` | WARN | 记录警告信息 |
| `Error` | `v ...any` | ERROR | 记录错误信息 |
| `Fatal` | `v ...any` | FATAL | 记录致命错误,程序将退出 |
#### 格式化日志方法(支持占位符)
| 方法名称 | 参数 | 日志级别 | 说明 |
|---------|------|----------|------|
| `Debugf` | `format string, v ...any` | DEBUG | 格式化记录调试信息 |
| `Infof` | `format string, v ...any` | INFO | 格式化记录一般信息 |
| `Warnf` | `format string, v ...any` | WARN | 格式化记录警告信息 |
| `Errorf` | `format string, v ...any` | ERROR | 格式化记录错误信息 |
| `Fatalf` | `format string, v ...any` | FATAL | 格式化记录致命错误,程序将退出 |
#### 控制方法
| 方法名称 | 参数 | 说明 |
|---------|------|------|
| `Close` | 无 | 优雅关闭日志记录器,确保所有日志写入完成 |
### 日志级别常量
| 常量名称 | 数值 | 说明 |
|---------|------|------|
| `DEBUG` | 10 | 调试级别,用于开发调试 |
| `INFO` | 20 | 信息级别,记录一般信息 |
| `WARN` | 40 | 警告级别,记录警告信息 |
| `ERROR` | 50 | 错误级别,记录错误信息 |
| `FATAL` | 60 | 致命级别,记录致命错误 |
| `NONE` | 255 | 禁用所有日志输出 |
## 💡 最佳实践
### 1. 日志级别使用建议
- **DEBUG**: 仅在开发和调试时使用,包含详细的程序执行信息
- **INFO**: 记录程序的正常运行信息,如启动、关闭、重要操作等
- **WARN**: 记录警告信息,程序可以继续运行但需要注意
- **ERROR**: 记录错误信息,程序遇到问题但可以恢复
- **FATAL**: 记录致命错误,程序无法继续运行
### 2. 性能优化建议
```go
// 推荐:根据场景选择合适的预设配置
// 高并发生产环境
logger := fastlog.NewFastLog(fastlog.ProdConfig("logs", "app.log"))
// 开发调试环境
logger := fastlog.NewFastLog(fastlog.DevConfig("logs", "debug.log"))
// 极致性能场景
logger := fastlog.NewFastLog(fastlog.SilentConfig("logs", "silent.log"))
// 自定义配置(仅在预设配置不满足需求时使用)
config := fastlog.NewFastLogConfig("logs", "app.log")
config.FlushInterval = 1 * time.Second // 增加刷新间隔减少 IO
config.LogLevel = fastlog.INFO // 生产环境避免 DEBUG 日志
config.MaxSize = 100 // 适当增大文件大小减少轮转频率
// 推荐:使用格式化方法避免不必要的字符串拼接
logger.Infof("用户 %s 执行操作 %s", username, action) // 推荐
// logger.Info("用户 " + username + " 执行操作 " + action) // 不推荐
```
### 3. 错误处理建议
```go
// 推荐:在关键位置使用 defer 确保日志记录器正确关闭
func main() {
logger := fastlog.NewFastLog(config)
defer func() {
logger.Info("程序正在关闭...")
logger.Close()
}()
// 业务逻辑...
}
```
## 🔧 依赖信息
FastLog 依赖以下外部库:
```go
require (
gitee.com/MM-Q/colorlib v1.2.4 // 终端颜色输出库
gitee.com/MM-Q/logrotatex v1.0.0 // 日志轮转库
)
```
- **colorlib**: 提供终端颜色输出功能,支持多种颜色和样式
- **logrotatex**: 提供日志文件轮转功能,支持按大小、时间和数量轮转
## 📋 版本要求
- **Go 版本**: 1.24.4 或更高版本
- **操作系统**: 支持 Windows、Linux、macOS
## ❓ 常见问题
### Q: 如何在生产环境中使用?
A: 建议在生产环境中:
- 设置日志级别为 INFO 或更高
- 使用 JSON 格式便于日志分析
- 禁用控制台输出,仅输出到文件
- 配置合适的日志轮转策略
### Q: 如何处理高并发场景?
A: FastLog 内置了智能背压控制:
- 自动根据负载丢弃低优先级日志
- 批量处理减少系统调用
- 异步处理避免阻塞业务逻辑
### Q: 日志文件过大怎么办?
A: 配置日志轮转参数:
```go
config.MaxSize = 50 // 50MB 轮转
config.MaxAge = 7 // 保留 7 天
config.MaxFiles = 10 // 最多 10 个备份
config.Compress = true // 启用压缩
```
### Q: 如何自定义日志格式?
A: 使用 Custom 格式:
```go
config.LogFormat = fastlog.Custom
logger.Info("自定义格式的消息") // 直接输出原始消息
```
## 📈 性能测试
### 高并发性能测试报告
基于最新智能分层缓冲区优化后的测试数据(22核CPU,12个Goroutine并发):
```
============================================================
FastLog 高并发性能测试报告
============================================================
📊 测试基本信息:
开始时间: 2025-08-14 09:13:47.768
结束时间: 2025-08-14 09:13:49.733
测试耗时: 1.965s (1964.97ms)
Goroutine数量: 12
📝 日志处理统计:
预期生成: 300.0万条日志
实际生成: 300.0万条日志
文件写入: 6.5万条有效日志
成功率: 2.18%
实际吞吐量: 152.7万条/秒
💾 内存使用统计:
开始内存: 340.0 KB
结束内存: 1.2 MB
峰值内存: 29.7 MB
内存增长: +897.5 KB
总分配: 312.4 MB
系统内存: 61.4 MB
GC次数: 28次
GC暂停时间: 8.20ms
⚡ 性能评估:
平均每条日志内存开销: 0.31 bytes
平均每条日志处理时间: 0.65 μs
🖥️ 系统资源:
CPU核心数: 22
最大并发Goroutine: 12
并发度: 0.5x
============================================================
```
### 性能指标总结
| 指标类型 | 数值 | 说明 |
|---------|------|------|
| **吞吐量** | 152.7万条/秒 | 12个Goroutine并发下的实际处理能力 |
| **处理延迟** | 0.65μs | 平均每条日志的处理时间 |
| **内存效率** | 0.31 bytes/条 | 平均每条日志的内存开销 |
| **内存占用** | +897.5 KB | 处理300万条日志的内存增长 |
| **智能背压** | 2.18% | 高负载下的日志保留率(智能丢弃97.82%) |
| **GC友好** | 28次GC | 1.96秒内触发28次垃圾回收 |
| **内存峰值** | 29.7MB | 处理300万条日志的最大内存占用 |
| **GC暂停** | 8.20ms | 总GC暂停时间,平均0.29ms/次 |
### 测试环境说明
- **测试方法**: `go test -v -run TestConcurrentFastLog`
- **并发级别**: 12个Goroutine(适度并发优化)
- **测试数据量**: 300万条日志
- **智能背压**: 启用(高负载下自动丢弃低优先级日志)
- **文件输出**: 启用(实际写入6.5万条有效日志)
- **缓冲区管理**: 使用sync.Pool对象池优化内存分配
### 性能特点
1. **极致吞吐量**: 在12个Goroutine并发下达到152.7万条/秒的处理能力
2. **超低延迟**: 平均0.65微秒的单条日志处理时间
3. **极致内存效率**: 每条日志仅占用0.31字节内存开销
4. **智能背压**: 高负载下自动保留重要日志,丢弃冗余信息
5. **优化的GC管理**: 通过智能分层缓冲区和对象池优化减少垃圾回收压力
6. **更短GC暂停**: 平均每次GC暂停仅0.29ms,对业务影响极小
### 🚀 性能优化成果
经过全面的性能优化,FastLog 在以下方面取得了显著提升:
- **吞吐量提升**: 达到152.7万条/秒的极致处理能力
- **超低延迟**: 平均0.65μs的单条日志处理时间
- **内存优化**: 峰值内存控制在29.7MB,内存效率0.31 bytes/条
- **并发优化**: 12个Goroutine实现高效的资源利用
- **GC优化**: GC暂停时间仅8.20ms,平均0.29ms/次
#### 核心优化技术
1. **对象池优化**: 使用sync.Pool复用缓冲区,减少内存分配
2. **时间戳原子缓存**: 使用原子操作替代读写锁,3-5倍性能提升
3. **资源泄漏防护**: defer保护机制确保对象池正确回收
4. **文件名缓存优化**: 避免重复的 `filepath.Base()` 调用
5. **零拷贝写入优化**: 直接格式化到目标缓冲区
6. **零拷贝颜色处理**: 直接缓冲区颜色操作
7. **日志级别字符串预分配**: 消除动态填充开销
8. **静态检查优化**: 使用 `fmt.Fprintf` 替代低效的字符串操作
## 🤝 贡献指南
欢迎贡献代码!请遵循以下步骤:
1. Fork 本仓库
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 创建 Pull Request
### 开发规范
- 遵循 Go 代码规范
- 添加必要的单元测试
- 更新相关文档
- 确保所有测试通过
## 📄 许可证
本项目采用 GPL 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。
## 📞 联系方式
- 项目主页:[https://deepwiki.com/QiaoMuDe/fastlog](https://deepwiki.com/QiaoMuDe/fastlog)
- Gitee:[https://gitee.com/MM-Q/fastlog](https://gitee.com/MM-Q/fastlog)
- GitHub:[https://github.com/QiaoMuDe/fastlog](https://github.com/QiaoMuDe/fastlog)
## 📚 相关文档
- [API 文档](./APIDOC.md) - 详细的 API 参考文档
---
**FastLog** - 让日志记录更简单、更高效! 🚀