# 一文理清GO语言日志库实现开发项目中的日志功能(rotatelogs/zap分析)
## rotatelogs
`rotatelogs` 是一个用于管理日志文件的 Go 语言库,它提供了自动轮换、压缩和删除旧日志文件的功能。这个库可以帮助你更好地管理和维护你的应用程序日志。要使用 `rotatelogs`,你需要先安装它:
`go get -u github.com/lestrrat-go/file-rotatelogs`
```go
package main
import (
"github.com/lestrrat-go/file-rotatelogs"
"time"
)
func main() {
logFilePath := ""
logFileName := ""
// 创建一个日志文件轮换器
r, err := rotatelogs.New(
logFilePath+logFileName+"./mylog.%Y%m%d", // 日志文件名格式
rotatelogs.WithLinkName("./mylog"), // 软链接名
rotatelogs.WithMaxAge(7*24*time.Hour), // 最大保存时间
rotatelogs.WithRotationTime(24*time.Hour), // 轮换间隔
)
if err != nil {
panic(err)
}
// 使用 r 作为日志输出源
logger := log.New(r, "", log.LstdFlags)
logger.Println("Hello, rotatelogs!")
}
```
该示例代码会创建一个名为 `mylog.YYYYMMDD` 的日志文件,每天轮换一次,并保留最近 7 天的日志文件。你可以根据需要调整这些参数。
"go.uber.org/zap" 和 "go.uber.org/zap/zapcore" 是Go语言中的两个日志库。这两个库提供了高性能、可扩展的日志记录功能。
## "go.uber.org/zap"
这个库提供了一个简单的API,用于记录日志。它包含了一些高级功能,如结构化日志记录、日志级别过滤、日志格式化等。要使用这个库,你需要先安装它:
```bash
go get -u go.uber.org/zap
```
然后