322 lines
8.5 KiB
Markdown
322 lines
8.5 KiB
Markdown
|
|
# 📝 日志系统配置示例
|
|||
|
|
|
|||
|
|
## 概述
|
|||
|
|
|
|||
|
|
新的日志系统完全基于配置文件,所有配置都在 `config.yaml` 中设置,容器代码保持简洁。
|
|||
|
|
|
|||
|
|
## 🎯 完整配置示例
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
# 🚀 日志系统配置 - 基于 Zap 官方推荐
|
|||
|
|
logger:
|
|||
|
|
# 基础配置
|
|||
|
|
level: "info" # 日志级别: debug, info, warn, error, fatal, panic
|
|||
|
|
format: "json" # 输出格式: json, console
|
|||
|
|
output: "file" # 输出方式: stdout, stderr, file
|
|||
|
|
log_dir: "logs" # 日志目录
|
|||
|
|
use_daily: true # 是否按日分包
|
|||
|
|
use_color: false # 是否使用彩色输出(仅console格式有效)
|
|||
|
|
|
|||
|
|
# 文件配置
|
|||
|
|
max_size: 100 # 单个文件最大大小(MB)
|
|||
|
|
max_backups: 5 # 最大备份文件数
|
|||
|
|
max_age: 30 # 最大保留天数
|
|||
|
|
compress: true # 是否压缩
|
|||
|
|
|
|||
|
|
# 高级功能
|
|||
|
|
enable_level_separation: true # 是否启用按级别分文件
|
|||
|
|
enable_request_logging: true # 是否启用请求日志
|
|||
|
|
enable_performance_log: true # 是否启用性能日志
|
|||
|
|
|
|||
|
|
# 各级别配置(按级别分文件时使用)
|
|||
|
|
level_configs:
|
|||
|
|
debug:
|
|||
|
|
max_size: 50 # 50MB
|
|||
|
|
max_backups: 3
|
|||
|
|
max_age: 7 # 7天
|
|||
|
|
compress: true
|
|||
|
|
info:
|
|||
|
|
max_size: 100 # 100MB
|
|||
|
|
max_backups: 5
|
|||
|
|
max_age: 30 # 30天
|
|||
|
|
compress: true
|
|||
|
|
warn:
|
|||
|
|
max_size: 100 # 100MB
|
|||
|
|
max_backups: 5
|
|||
|
|
max_age: 30 # 30天
|
|||
|
|
compress: true
|
|||
|
|
error:
|
|||
|
|
max_size: 200 # 200MB
|
|||
|
|
max_backups: 10
|
|||
|
|
max_age: 90 # 90天
|
|||
|
|
compress: true
|
|||
|
|
fatal:
|
|||
|
|
max_size: 100 # 100MB
|
|||
|
|
max_backups: 10
|
|||
|
|
max_age: 365 # 1年
|
|||
|
|
compress: true
|
|||
|
|
panic:
|
|||
|
|
max_size: 100 # 100MB
|
|||
|
|
max_backups: 10
|
|||
|
|
max_age: 365 # 1年
|
|||
|
|
compress: true
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🔧 环境特定配置
|
|||
|
|
|
|||
|
|
### 开发环境配置
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
# 开发环境 - 详细日志,控制台输出
|
|||
|
|
logger:
|
|||
|
|
level: "debug"
|
|||
|
|
format: "console"
|
|||
|
|
output: "stdout"
|
|||
|
|
use_daily: false
|
|||
|
|
use_color: true
|
|||
|
|
enable_level_separation: false
|
|||
|
|
development: true
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 生产环境配置
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
# 生产环境 - 精简日志,文件输出
|
|||
|
|
logger:
|
|||
|
|
level: "warn"
|
|||
|
|
format: "json"
|
|||
|
|
output: "file"
|
|||
|
|
log_dir: "/app/logs"
|
|||
|
|
use_daily: true
|
|||
|
|
use_color: false
|
|||
|
|
enable_level_separation: true
|
|||
|
|
development: false
|
|||
|
|
|
|||
|
|
# 生产环境文件配置
|
|||
|
|
max_size: 200
|
|||
|
|
max_backups: 10
|
|||
|
|
max_age: 90
|
|||
|
|
compress: true
|
|||
|
|
|
|||
|
|
# 生产环境级别配置
|
|||
|
|
level_configs:
|
|||
|
|
warn:
|
|||
|
|
max_size: 200
|
|||
|
|
max_backups: 10
|
|||
|
|
max_age: 90
|
|||
|
|
compress: true
|
|||
|
|
error:
|
|||
|
|
max_size: 500
|
|||
|
|
max_backups: 20
|
|||
|
|
max_age: 180
|
|||
|
|
compress: true
|
|||
|
|
fatal:
|
|||
|
|
max_size: 100
|
|||
|
|
max_backups: 10
|
|||
|
|
max_age: 365
|
|||
|
|
compress: true
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📊 配置字段说明
|
|||
|
|
|
|||
|
|
### 基础配置字段
|
|||
|
|
|
|||
|
|
| 字段 | 类型 | 说明 | 默认值 |
|
|||
|
|
|------|------|------|--------|
|
|||
|
|
| `level` | string | 日志级别 | "info" |
|
|||
|
|
| `format` | string | 输出格式 | "json" |
|
|||
|
|
| `output` | string | 输出方式 | "stdout" |
|
|||
|
|
| `log_dir` | string | 日志目录 | "logs" |
|
|||
|
|
| `use_daily` | bool | 是否按日分包 | false |
|
|||
|
|
| `use_color` | bool | 是否使用彩色输出 | false |
|
|||
|
|
|
|||
|
|
### 文件配置字段
|
|||
|
|
|
|||
|
|
| 字段 | 类型 | 说明 | 默认值 |
|
|||
|
|
|------|------|------|--------|
|
|||
|
|
| `max_size` | int | 单个文件最大大小(MB) | 100 |
|
|||
|
|
| `max_backups` | int | 最大备份文件数 | 5 |
|
|||
|
|
| `max_age` | int | 最大保留天数 | 30 |
|
|||
|
|
| `compress` | bool | 是否压缩 | true |
|
|||
|
|
|
|||
|
|
### 高级功能字段
|
|||
|
|
|
|||
|
|
| 字段 | 类型 | 说明 | 默认值 |
|
|||
|
|
|------|------|------|--------|
|
|||
|
|
| `enable_level_separation` | bool | 是否启用按级别分文件 | false |
|
|||
|
|
| `enable_request_logging` | bool | 是否启用请求日志 | false |
|
|||
|
|
| `enable_performance_log` | bool | 是否启用性能日志 | false |
|
|||
|
|
|
|||
|
|
### 级别配置字段
|
|||
|
|
|
|||
|
|
| 字段 | 类型 | 说明 | 默认值 |
|
|||
|
|
|------|------|------|--------|
|
|||
|
|
| `max_size` | int | 单个文件最大大小(MB) | 无 |
|
|||
|
|
| `max_backups` | int | 最大备份文件数 | 无 |
|
|||
|
|
| `max_age` | int | 最大保留天数 | 无 |
|
|||
|
|
| `compress` | bool | 是否压缩 | 无 |
|
|||
|
|
|
|||
|
|
## 🚀 配置最佳实践
|
|||
|
|
|
|||
|
|
### 1. 按环境配置
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
# 开发环境
|
|||
|
|
logger:
|
|||
|
|
level: "debug"
|
|||
|
|
format: "console"
|
|||
|
|
output: "stdout"
|
|||
|
|
use_color: true
|
|||
|
|
enable_level_separation: false
|
|||
|
|
|
|||
|
|
# 测试环境
|
|||
|
|
logger:
|
|||
|
|
level: "info"
|
|||
|
|
format: "json"
|
|||
|
|
output: "file"
|
|||
|
|
use_daily: true
|
|||
|
|
enable_level_separation: true
|
|||
|
|
|
|||
|
|
# 生产环境
|
|||
|
|
logger:
|
|||
|
|
level: "warn"
|
|||
|
|
format: "json"
|
|||
|
|
output: "file"
|
|||
|
|
use_daily: true
|
|||
|
|
enable_level_separation: true
|
|||
|
|
max_size: 200
|
|||
|
|
max_backups: 10
|
|||
|
|
max_age: 90
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 按级别配置
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
logger:
|
|||
|
|
enable_level_separation: true
|
|||
|
|
level_configs:
|
|||
|
|
# 调试日志 - 小文件,短期保留
|
|||
|
|
debug:
|
|||
|
|
max_size: 50
|
|||
|
|
max_backups: 3
|
|||
|
|
max_age: 7
|
|||
|
|
compress: true
|
|||
|
|
|
|||
|
|
# 信息日志 - 中等文件,中期保留
|
|||
|
|
info:
|
|||
|
|
max_size: 100
|
|||
|
|
max_backups: 5
|
|||
|
|
max_age: 30
|
|||
|
|
compress: true
|
|||
|
|
|
|||
|
|
# 警告日志 - 中等文件,中期保留
|
|||
|
|
warn:
|
|||
|
|
max_size: 100
|
|||
|
|
max_backups: 5
|
|||
|
|
max_age: 30
|
|||
|
|
compress: true
|
|||
|
|
|
|||
|
|
# 错误日志 - 大文件,长期保留
|
|||
|
|
error:
|
|||
|
|
max_size: 200
|
|||
|
|
max_backups: 10
|
|||
|
|
max_age: 90
|
|||
|
|
compress: true
|
|||
|
|
|
|||
|
|
# 致命错误 - 中等文件,长期保留
|
|||
|
|
fatal:
|
|||
|
|
max_size: 100
|
|||
|
|
max_backups: 10
|
|||
|
|
max_age: 365
|
|||
|
|
compress: true
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 性能优化配置
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
logger:
|
|||
|
|
# 生产环境性能优化
|
|||
|
|
level: "warn" # 只记录警告及以上级别
|
|||
|
|
format: "json" # JSON格式便于日志分析
|
|||
|
|
output: "file" # 文件输出避免控制台性能影响
|
|||
|
|
use_daily: true # 按日分包便于管理
|
|||
|
|
enable_level_separation: true # 按级别分文件便于分析
|
|||
|
|
|
|||
|
|
# 文件轮转优化
|
|||
|
|
max_size: 200 # 较大的文件大小减少轮转频率
|
|||
|
|
max_backups: 10 # 适中的备份数量
|
|||
|
|
max_age: 90 # 90天保留期平衡存储和分析需求
|
|||
|
|
compress: true # 启用压缩节省存储空间
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🔍 配置验证
|
|||
|
|
|
|||
|
|
### 1. 必需字段
|
|||
|
|
|
|||
|
|
以下字段是必需的,如果未设置将使用默认值:
|
|||
|
|
|
|||
|
|
- `level`: 日志级别
|
|||
|
|
- `format`: 输出格式
|
|||
|
|
- `output`: 输出方式
|
|||
|
|
|
|||
|
|
### 2. 可选字段
|
|||
|
|
|
|||
|
|
以下字段是可选的,如果未设置将使用系统默认值:
|
|||
|
|
|
|||
|
|
- `log_dir`: 日志目录
|
|||
|
|
- `use_daily`: 是否按日分包
|
|||
|
|
- `use_color`: 是否使用彩色输出
|
|||
|
|
- `max_size`: 文件大小限制
|
|||
|
|
- `max_backups`: 备份文件数量
|
|||
|
|
- `max_age`: 文件保留天数
|
|||
|
|
- `compress`: 是否压缩
|
|||
|
|
|
|||
|
|
### 3. 条件字段
|
|||
|
|
|
|||
|
|
以下字段在特定条件下是必需的:
|
|||
|
|
|
|||
|
|
- 当 `output: "file"` 时,建议设置 `log_dir`
|
|||
|
|
- 当 `enable_level_separation: true` 时,建议设置 `level_configs`
|
|||
|
|
- 当 `format: "console"` 时,`use_color` 才有效
|
|||
|
|
|
|||
|
|
## 📝 配置迁移指南
|
|||
|
|
|
|||
|
|
### 从旧配置迁移
|
|||
|
|
|
|||
|
|
如果您之前使用的是旧版本的日志配置,可以按照以下方式迁移:
|
|||
|
|
|
|||
|
|
#### 旧配置
|
|||
|
|
```yaml
|
|||
|
|
# 旧版本配置
|
|||
|
|
logging:
|
|||
|
|
level: "info"
|
|||
|
|
file: "logs/app.log"
|
|||
|
|
max_size: 100
|
|||
|
|
max_backups: 3
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 新配置
|
|||
|
|
```yaml
|
|||
|
|
# 新版本配置
|
|||
|
|
logger:
|
|||
|
|
level: "info"
|
|||
|
|
output: "file"
|
|||
|
|
log_dir: "logs"
|
|||
|
|
max_size: 100
|
|||
|
|
max_backups: 3
|
|||
|
|
format: "json"
|
|||
|
|
use_daily: false
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🎉 总结
|
|||
|
|
|
|||
|
|
新的日志系统配置完全基于 `config.yaml` 文件,具有以下特点:
|
|||
|
|
|
|||
|
|
1. **配置集中**: 所有日志配置都在一个地方管理
|
|||
|
|
2. **环境友好**: 支持不同环境的配置
|
|||
|
|
3. **灵活性强**: 支持按级别分文件、按日分包等高级功能
|
|||
|
|
4. **性能优化**: 基于 Zap 官方最佳实践
|
|||
|
|
5. **易于维护**: 配置结构清晰,易于理解和修改
|
|||
|
|
|
|||
|
|
通过合理的配置,您可以获得高性能、结构化的日志系统,满足开发、测试和生产环境的各种需求!
|