:memo:修改readme文档

This commit is contained in:
comma
2025-10-29 18:09:44 +08:00
parent ced50ac491
commit 54efe7547a

View File

@@ -1,9 +1,11 @@
# zap_logger 日志组件库使用文档 # zap_logger 日志组件库使用文档
## 项目概述 ## 项目概述
`zap_logger` 是一个基于 [Zap](https://github.com/uber-go/zap) 的日志组件库,提供灵活的多输出目标支持、可定制的日志格式和级别控制,以及与 Loki 日志系统的集成能力。该库旨在简化 Go 应用程序的日志配置流程,满足不同环境下的日志收集需求。 `zap_logger` 是一个基于 [Zap](https://github.com/uber-go/zap) 的日志组件库,提供灵活的多输出目标支持、可定制的日志格式和级别控制,以及与 Loki 日志系统的集成能力。该库旨在简化 Go 应用程序的日志配置流程,满足不同环境下的日志收集需求。
## 核心功能 ## 核心功能
- **多输出目标**:同时支持控制台输出、文件输出和 Loki 日志系统 - **多输出目标**:同时支持控制台输出、文件输出和 Loki 日志系统
- **灵活配置**:通过 YAML 配置文件或代码选项动态调整日志行为 - **灵活配置**:通过 YAML 配置文件或代码选项动态调整日志行为
- **日志轮转**:文件日志自动轮转,支持大小限制、备份数量和压缩 - **日志轮转**:文件日志自动轮转,支持大小限制、备份数量和压缩
@@ -12,6 +14,7 @@
- **默认配置**:内置合理默认值,零配置快速启动 - **默认配置**:内置合理默认值,零配置快速启动
## 安装方法 ## 安装方法
```go ```go
go get code.mrx.ltd/pkg/zap_logger go get code.mrx.ltd/pkg/zap_logger
``` ```
@@ -19,6 +22,7 @@ go get code.mrx.ltd/pkg/zap_logger
## 快速开始 ## 快速开始
### 默认配置 ### 默认配置
无需任何配置文件直接初始化即可使用默认配置控制台输出Info级别Console编码 无需任何配置文件直接初始化即可使用默认配置控制台输出Info级别Console编码
```go ```go
@@ -34,7 +38,6 @@ func main() {
if err := zap_logger.NewZapLogger(""); err != nil { if err := zap_logger.NewZapLogger(""); err != nil {
panic(err) panic(err)
} }
// 使用全局日志器 // 使用全局日志器
log.Info("这是一条info级别的日志") log.Info("这是一条info级别的日志")
@@ -43,12 +46,14 @@ func main() {
``` ```
### 自定义配置文件 ### 自定义配置文件
创建 YAML 配置文件(如 `logger.yaml` 创建 YAML 配置文件(如 `logger.yaml`
```yaml ```yaml
logger: logger:
encoder: "json" # 全局编码器 (json/console) encoder: "json" # 全局编码器 (json/console)
level: "info" # 全局日志级别 level: "info" # 全局日志级别
stack_level: panic # 全局堆栈打印级别触发panic及以上级别日志时打印堆栈跟踪
file: file:
enable: true # 启用文件输出,默认关闭 enable: true # 启用文件输出,默认关闭
@@ -84,6 +89,7 @@ if err := zap_logger.NewZapLogger("logger.yaml"); err != nil {
## 配置说明 ## 配置说明
### 全局配置 (logger) ### 全局配置 (logger)
| 字段名 | 类型 | 说明 | 可选值 | 默认值 | | 字段名 | 类型 | 说明 | 可选值 | 默认值 |
|-------------|--------|----------|------------------------|-----------| |-------------|--------|----------|------------------------|-----------|
| encoder | string | 全局日志编码器 | "json", "console" | "console" | | encoder | string | 全局日志编码器 | "json", "console" | "console" |
@@ -91,6 +97,7 @@ if err := zap_logger.NewZapLogger("logger.yaml"); err != nil {
| stack_level | string | 全局堆栈打印级别 | "warn", "error", "dpanic", "panic", "fatal" | "panic" | | stack_level | string | 全局堆栈打印级别 | "warn", "error", "dpanic", "panic", "fatal" | "panic" |
### 文件输出配置 (file) ### 文件输出配置 (file)
| 字段名 | 类型 | 说明 | 默认值 | | 字段名 | 类型 | 说明 | 默认值 |
|---------------|--------|-------------------------------|---------------------------------| |---------------|--------|-------------------------------|---------------------------------|
| enable | bool | 是否启用文件输出 | false | | enable | bool | 是否启用文件输出 | false |
@@ -104,6 +111,7 @@ if err := zap_logger.NewZapLogger("logger.yaml"); err != nil {
| compress | bool | 是否压缩备份文件 | false | | compress | bool | 是否压缩备份文件 | false |
### 控制台输出配置 (console) ### 控制台输出配置 (console)
| 字段名 | 类型 | 说明 | 默认值 | | 字段名 | 类型 | 说明 | 默认值 |
|----------|--------|-------------------------------|-------------------| |----------|--------|-------------------------------|-------------------|
| enable | bool | 是否启用控制台输出 | true | | enable | bool | 是否启用控制台输出 | true |
@@ -112,6 +120,7 @@ if err := zap_logger.NewZapLogger("logger.yaml"); err != nil {
| color | bool | 是否启用彩色输出 | false | | color | bool | 是否启用彩色输出 | false |
### Loki输出配置 (loki) ### Loki输出配置 (loki)
| 字段名 | 类型 | 说明 | 默认值 | | 字段名 | 类型 | 说明 | 默认值 |
|---------------|--------|-------------------------------|---------------------------------| |---------------|--------|-------------------------------|---------------------------------|
| enable | bool | 是否启用Loki输出 | false | | enable | bool | 是否启用Loki输出 | false |
@@ -125,6 +134,7 @@ if err := zap_logger.NewZapLogger("logger.yaml"); err != nil {
| environment | string | 环境标识标签 | "" | | environment | string | 环境标识标签 | "" |
## 代码配置选项 ## 代码配置选项
除了配置文件外,还可以通过代码选项动态调整配置: 除了配置文件外,还可以通过代码选项动态调整配置:
```go ```go
@@ -174,6 +184,7 @@ func main() {
## 高级使用示例 ## 高级使用示例
### 多输出组合 ### 多输出组合
同时启用文件和Loki输出禁用控制台 同时启用文件和Loki输出禁用控制台
```yaml ```yaml
@@ -197,7 +208,82 @@ loki:
``` ```
## 注意事项 ## 注意事项
1. 配置优先级:代码选项 > 配置文件 > 默认配置 1. 配置优先级:代码选项 > 配置文件 > 默认配置
2. 日志级别:如果全局级别高于输出特定级别,以全局级别为准 2. 日志级别:如果全局级别高于输出特定级别,以全局级别为准
3. Loki依赖使用Loki输出时需确保Loki服务可访问 3. Loki依赖使用Loki输出时需确保Loki服务可访问
4. 错误处理NewZapLogger返回的错误需妥善处理避免日志初始化失败 4. 错误处理NewZapLogger返回的错误需妥善处理避免日志初始化失败
## 框架集成插件
### Gin 中间件集成
`zap_logger` 提供了 Gin 框架的日志中间件,可自动记录 HTTP 请求信息:
```go
import (
"code.mrx.ltd/pkg/zap_logger"
"code.mrx.ltd/pkg/zap_logger/plugins"
"github.com/gin-gonic/gin"
)
func main() {
// 初始化日志
if err := zap_logger.NewZapLogger("logger.yaml"); err != nil {
panic(err)
}
r := gin.Default()
// 添加Gin日志中间件
r.Use(plugins.GinZap())
// 自定义日志格式示例
customFormat := func(param plugins.LogParam) string {
return fmt.Sprintf("[%s] %s %s %d %s",
param.Time, param.Method, param.Path, param.StatusCode, param.Latency)
}
r.Use(plugins.GinZapWithFormat(customFormat))
r.Run()
}
```
中间件默认记录时间、状态码、响应耗时、客户端IP、请求方法、路径和用户代理信息。
### GORM 日志插件
集成 GORM ORM 框架的日志插件,可记录 SQL 执行情况:
```go
import (
"code.mrx.ltd/pkg/zap_logger"
"code.mrx.ltd/pkg/zap_logger/plugins"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
func main() {
// 初始化日志
if err := zap_logger.NewZapLogger("logger.yaml"); err != nil {
panic(err)
}
// 配置GORM使用zap_logger
db, err := gorm.Open(mysql.Open("dsn"), &gorm.Config{
Logger: plugins.DefaultGormLogger, // 使用默认配置
})
// 自定义GORM日志配置
customLogger := plugins.NewGormLogger(plugins.logger.Config{
SlowThreshold: 3 * time.Second, // 慢查询阈值
LogLevel: plugins.logger.Warn, // 日志级别
IgnoreRecordNotFoundError: true, // 忽略记录不存在错误
})
db, err = gorm.Open(mysql.Open("dsn"), &gorm.Config{
Logger: customLogger,
})
}
```
GORM 插件默认记录SQL 语句、执行时间、影响行数,支持慢查询告警和错误日志分级。